7. Toán tử trong JavaScript
7.5.2. Các toán tử dịch của thao tác bit
Các toán tử dịch bit cần hai toán hạng, toán hạng thứ nhất là số được dịch, và toán hạng thứ hai chỉ ra số vị trí mà toán hạng thứ nhất được dịch chuyển. Hướng của toán tử dịch chuyển bit được chỉ ra bởi toán tử sử dụng.
Các toán tử dịch chuyển sẽ đổi các toán hạng thứ nhất thành số nguyên 32 bit, dịch theo hướng của toán tử yêu cầu sang số bước dịch được chỉ ra ở toán hạng thứ hai, và sau đó trả về kết quả cùng kiểu với toán hạng thứ nhất.
Các toán tử dịch chuyển và ý nghĩa của chúng được liệt kê và phân tích trong bảng sau:
Toán tử Mô tả Ví dụ
<< (Dịch trái)
Toán tử này dịch chuyển toán hạng đầu tiên sang trái một số bit xác định bởi toán hạng thứ hai. Các bit đẩy sang trái bị loại bỏ, điền các bit 0 vào bên phải
9 << 2 = 36
(vì 9 được viết thành 1001, dịch sang trái hai bit thành 100100, tức là bằng 36 )
>> (Dịch phải duy trì dấu)
Toán tử này dịch chuyển toán hạng đầu tiên sang phải một số bit xác định bởi toán hạng thứ hai. Các bit đẩy sang phải sẽ bị loại bỏ. Sao chép các bit bên trái nhất được dịch vào từ bên trái. Chính vì vậy mà dấu của toán hạng thứ nhất được duy trì sau phép dịch này.
· 9 >> 2 = 2
(vì 1001 dịch sang phải hai bit thành 10, tức là 2)
· -9 >>2 = -3
(bởi vì dấu được duy trì)
>>> (Dịch phải
điền 0)
Toán tử này dịch toán hạng thứ nhất sang phải một số bit xác định. Các bit đẩy ra ngoài bị loại bỏ. Các bit 0 được điền vào bên trái.Đối với các số không âm, dịch phải điền giá trị 0 và dịch phải duy trì dấu có cùng kết quả.
19 >>> 2 = 4
(vì 19 được chuyển thành 10011, dịch phải 2 bit thành 100, tức là 4)