该
>>>运算符是Java中无符号的右移位运算符。它有效地将操作数除以
2右操作数的幂,或者仅
2在此处。
>>和之间的差异
>>>仅在移动负数时才会显示。如果
>>运算符
1是a
1,则运算符会将其移位到最高有效位,而无论如何都将
>>>移位
0。
更新:
让我们求平均值
1和
2147483647(
Integer.MAX_VALUE)。我们可以轻松地进行数学运算:
(1 + 2147483647) / 2 = 2147483648 / 2 = 1073741824
现在,通过代码
(low + high) / 2,涉及到以下这些位:
1: 00000000 00000000 00000000 00000001+2147483647: 01111111 11111111 11111111 11111111================================================-2147483648: 10000000 00000000 00000000 00000000 // Overflow/2================================================-1073741824: 11000000 00000000 00000000 00000000 // Signed divide, same as >> 1.
让我们将“转移”到
>>>:
1: 00000000 00000000 00000000 00000001+2147483647: 01111111 11111111 11111111 11111111================================================-2147483648: 10000000 00000000 00000000 00000000 // Overflow>>> 1================================================+1073741824: 01000000 00000000 00000000 00000000 // Unsigned shift right.



