-2 >> 1和-2 >>> 1结果分析
解决方法:
-2 的二进制求法是正数取反加1,2 的二进制表示为0000 0000 0000 0000 0000 0000 0000 0010,因此-2的二进制表示为
1111 1111 1111 1111 1111 1111 1111 1110
1.(带符号右移“ >> ”)将运算数的二进制整体右移指定位数,正数高位用0补齐,负数高位用1补齐(保持负数符号不变),所以-2 >> 1的二进制结果为 1111 1111 1111 1111 1111 1111 1111 1111 ,除符号位之外,减一取反,得到-2 >> 1的十进制数为 -1 。
2. (无符号右移“ >>> ”) ,即无论正负数,右移之后符号位均补 0 。
所以-2 >>> 1二进制结果为 0111 1111 1111 1111 1111 1111 1111 1111,-2 >>> 1十进制结果 2^31 - 1
注: >> , << (没有无符号左移!), >>> , 运算符只针对int型和long型,byte ,short ,char型需要转换成Int型在进行操作。