我正在使用互联网上的补习说进行SCJP考试.
根据我的说明,>>操作员应该是右移,右边是符号位.虽然左移位运算符<<应该保留符号位.
然而,在我周围玩耍时,我可以用<<操作员移动标志(fe Integer.MAX_VALUE << 1评估为-2,而我永远无法用>>操作员移动标志.
我一定是在误解这里的东西,但是什么?
Rom*_*man 45
">>"已签名,因为它保留了标志.它使用数字的二进制表示中最左边的数字作为填充符.例如:
| this value is used as a filler
11011011
>> 11101101
01010010
>> 00101001
Run Code Online (Sandbox Code Playgroud)
">>>"是此运算符的无符号版本.它总是使用零作为填充物:
11011011
>>> 01101101
01010010
>>> 00101001
Run Code Online (Sandbox Code Playgroud)
在二进制表示中,最左边的数字确定数字的符号.所以,如果它是'1'那么我们有负值,如果它是'0' - 那么我们的数字是正数.这就是为什么使用最左边的数字作为填充物可以使符号保持永久性.