在Java中,为什么-32 >>> -1 = 1?它不仅限于-32。只要它们不是太大,它就适用于所有负数。我发现x >>> -1 = 1x >>> -2 = 3x >>> -3 = 7x >>> -4 = 15给定0> x>一些大的负数>>> -1和我已经阅读了二进制补码,但仍然不明白其原因。 最佳答案 这是因为当您移位32位int时,它仅占用移位距离的最后5位。 (即mod 32),因此-1 mod 32 = 31,因此您向右移动了31位。当您移一个负数(其起始位全为1)时,您将以1结尾。类似地,向右移-2即向右移30位,依此类推。如果移向long,它将将需要6位的移位距离。有关移位运算符如何工作的规范,请参见此处:http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.19关于java - 负逻辑移位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2671718/
10-11 19:58