Nhà điều hành >>>
là unsigned right bit-shift operator in Java. Nó phân chia hiệu quả toán hạng theo số 2
thành lũy thừa của toán hạng bên phải, hoặc chỉ 2
tại đây.
Sự khác biệt giữa >>
và >>>
sẽ chỉ hiển thị khi chuyển số âm. Nhà điều hành >>
thay đổi một bit 1
thành bit quan trọng nhất nếu nó là 1
và các ca >>>
thay đổi trong một 0
bất kể.
UPDATE:
Hãy trung bình 1
và 2147483647
(Integer.MAX_VALUE
). Chúng ta có thể làm toán dễ dàng:
(1 + 2147483647)/2 = 2147483648/2 = 1073741824
Bây giờ, với mã (low + high)/2
, đây là các bit tham gia:
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.
Hãy làm cho "sự thay đổi" để >>>
:
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.
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html – iamnotmaynard