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

Toán tử dịch trái bitwise (<<) trong JavaScript

Định nghĩa

a << b dịch bit của a sang trái b vị trí. Lấp 0 vào bên phải. Bit tràn bên trái bị loại bỏ.

Ví dụ

<script>
var a = 2;  // 10
var b = 3;  // 11
document.write("(a << b) = " + (a << b)); // 16 (10000)
</script>

Tương đương toán học

Dịch trái n bit = nhân 2^n (trong phạm vi 32-bit signed int).

1 << 0  // 1
1 << 1  // 2
1 << 2  // 4
1 << 3  // 8
5 << 2  // 20 (5 * 4)

Tràn số (overflow)

JS bitwise luôn làm việc trên signed 32-bit. Dịch trái có thể thay đổi dấu:

0x40000000 << 1  // 1073741824 << 1 = -2147483648 (tràn thành âm)
0x40000000 << 2  // 0 (bit 1 bị đẩy ra ngoài 32-bit)

Ứng dụng

  • Tạo bitmask: 1 << n tạo mask cho bit thứ n.
  • Nhân nhanh lũy thừa 2 (compiler tự tối ưu).
  • Pack/unpack dữ liệu: (r << 16) | (g << 8) | b (RGB → int).
  • Hash, crypto, graphics.

Lưu ý

  • Toán hạng phải (số bit dịch) lấy modulo 32: a << 33 === a << 1.
  • Kết quả là signed 32-bit int.