この>>>演算子は、Java の符号なし右ビット シフト演算子です。2これは、オペランドを右オペランドの累乗、またはここで効果的に除算し2ます。
との違いは>>、>>>負の数をシフトする場合にのみ表示されます。>>演算子は1、最上位ビットが の場合はビットを1シフト>>>し、0関係なく a をシフトします。
アップデート:
1と2147483647( ) を平均しましょうInteger.MAX_VALUE。簡単に計算できます。
(1 + 2147483647) / 2 = 2147483648 / 2 = 1073741824
ここで、 code を使用すると、(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.