我只是坚持这个小逻辑,我没有做对
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 个班次时,为什么我要取回分配的值?