szu*_*pie 2 java bit-manipulation bit-shift
在Java中,为什么-32 >>> -1 = 1?
它不仅仅是-32.它适用于所有负数,只要它们不是太大.
我发现
x >>> -1 = 1
x >>> -2 = 3
x >>> -3 = 7
x >>> -4 = 15
给定0> x>一些大的负数
是不是>>> -1与<< 1相同?但是-32 << 1 = -64.
我已经阅读了两个补充,但仍然不理解推理.
这是因为当您移动32位时int,它只需要移位距离的最后5位.(即mod 32),所以-1 mod 32 = 31,所以你向右移31位.当您移动一个负数(其开始位均为1)时,您最终得到1.同样,向右移动-2正在向右移动30位,等等.如果您移动a long,则需要6移位距离的位.请参阅此处了解移位运算符的工作原理:http:
//docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.19