Định nghĩa
a >> b dịch bit của a sang phải b vị trí. Giữ bit dấu (sign-propagating) – bit trái nhất được sao chép.
Ví dụ
<script>
var a = 2; // 000...010
var b = 3; // 000...011
document.write("(a >> b) = " + (a >> b)); // 0
var c = -8; // 111...1000
document.write("(-8 >> 2) = " + (c >> 2)); // -2 (111...1110)
</script>
Tương đương toán học
Dịch phải n bit ≈ chia cho 2^n và làm tròn về 0 (floor cho dương, ceil cho âm).
8 >> 1 // 4 (8/2)
-8 >> 1 // -4 (-8/2)
9 >> 1 // 4 (floor(4.5))
-9 >> 1 // -5 (ceil(-4.5))
So sánh với >>> (unsigned)
-8 >> 2 // -2 (giữ dấu)
-8 >>> 2 // 1073741822 (lấp 0, thành dương lớn)
Ứng dụng
- Chia nhanh cho lũy thừa 2 (tối ưu compiler tự làm).
- Trích xuất bit cao:
(value >> 16) & 0xFFFF. - Xử lý màu sắc, nén dữ liệu, crypto.