Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Toán tử dịch phải bitwise (>>) trong JavaScript

Đị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.