我卡在了一个小逻辑上,一直没能搞对。
int
是32位的,所以假设将20转换为二进制,则如下:
// 00000000000000000000000000010100
现在,如果我执行右移操作,比如说4
int a = 20>>4;
// 00000000000000000000000000000001
所以结果是1。
现在假设我再次取20并进行5次右移操作。
int b = 20>>5; //00000000000000000000000000000000
结果是0,所以如果我进行32位右移...为什么我得到的数字与我分配的数字相同?
int c = 20>>32; //how does this prints 20 again??
System.out.println("right shift 4= "+a+"\n right shift 5= "+b+"right shift 32 = "+c);
所以我期望的是,在5个移位之后,任何数量的移位都应该导致结果为0..但在32次移位中,为什么我会得到分配的值?