-2 >>> 1

158 阅读1分钟

-2 >>> 1表示无符号右移1位。

计算过程如下:

1.先将-2的绝对值转换成二进制,即为:0000 0000 0000 0000 0000 0000 0000 0010;

2.然后求该二进制的反码,即为:1111 1111 1111 1111 1111 1111 1111 1101;

3.最后将反码加1,即为:1111 1111 1111 1111 1111 1111 1111 1110;

4.无符号右移一位,即为:0111 1111 1111 1111 1111 1111 1111 1111;

5.结果是 2^31 -1

注意:负数运算是基于补码,负数的补码是在绝对值的反码的基础上,对最低位+1。