Toán tử bit trong JavaScript
- Trang trước JS giải cấu trúc
- Trang tiếp theo JS biểu thức chính quy
Toán tử bit trong JavaScript
Toán tử | Tên | Mô tả |
---|---|---|
& | AND | Nếu cả hai bit đều là 1 thì đặt mỗi bit là 1 |
| | OR | Nếu một trong hai bit là 1 thì đặt mỗi bit là 1 |
^ | XOR | Nếu hai bit chỉ có một là 1 thì đặt mỗi bit là 1 |
~ | NOT | Đảo ngược tất cả các bit |
<< | Đặt số không vào trái | Bằng cách đẩy số không từ phải vào trái và làm rơi bit bên trái nhất. |
>> | Đảo ngược dấu | Bằng cách đẩy bản sao của bit trái nhất vào phải và làm rơi bit bên phải nhất. |
>>> | Đặt số không vào phải | Bằng cách đẩy số không từ trái vào phải và làm rơi bit bên phải nhất. |
Mô hình
Hành động | Kết quả | tương đương | Kết quả |
---|---|---|---|
5 & 1 | 1 | 0101 & 0001 | 0001 |
5 | 1 | 5 | 0101 | 0001 | 0101 |
5 ^ 1 | 4 | 0101 ^ 0001 | 0100 |
~ 5 | 10 | ~0101 | 1010 |
5 << 1 | 10 | 0101 << 1 | 1010 |
5 >> 1 | 2 | 0101 >> 1 | 0010 |
5 >>> 1 | 2 | 0101 >>> 1 | 0010 |
JavaScript sử dụng số bit toán tử 32 bit
JavaScript lưu trữ số dưới dạng số thập phân 64 bit, nhưng tất cả các phép toán bit đều thực hiện bằng số bát phân 32 bit.
Trước khi thực hiện phép toán bit, JavaScript sẽ chuyển đổi số thành số nguyên có dấu 32 bit.
Sau khi thực hiện phép toán bit, kết quả sẽ được chuyển đổi lại thành số JavaScript 64 bit.
Ví dụ trên sử dụng số bát phân vô dấu 4 bit. Do đó ~5 trả về 10.
Do JavaScript sử dụng số nguyên có dấu 32 bit, JavaScript sẽ trả về -6.
00000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5 = -6)
Số nguyên có dấu sử dụng bit trái nhất làm dấu âm.
Toán tử bit AND
Khi thực hiện toán tử bit AND trên một cặp số bit, nếu tất cả các số bit đều là 1 thì trả về 1.
Ví dụ đơn vị:
Toán tử | Kết quả |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
Ví dụ bốn bit:
Toán tử | Kết quả |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Toán tử bit OR
Khi thực hiện toán tử bit OR trên một cặp số bit, nếu một trong hai số là 1 thì trả về 1:
Ví dụ đơn vị
Toán tử | Kết quả |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Toán tử bốn bit:
Hành động | Kết quả |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Toán tử bit XOR
Khi thực hiện toán tử bit XOR trên một cặp số bit, nếu số bit khác nhau thì trả về 1:
Ví dụ đơn vị:
Toán tử | Kết quả |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
Ví dụ bốn bit:
Toán tử | Kết quả |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
JavaScript toán tử bit AND (&)
Nếu tất cả các bit đều là 1, toán tử bit AND sẽ trả về 1:
Decimal | Binary |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001 (1) |
Mô hình
var x = 5 & 1;
JavaScript toán tử bit OR (|)
Nếu một trong số bit là 1, phép toán OR trả về 1:
Decimal | Binary |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
Mô hình
var x = 5 | 1;
Phép toán XOR (^) trong phép toán bit của JavaScript
Nếu số bit khác nhau, phép XOR trả về 1:
Decimal | Binary |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
Mô hình
var x = 5 ^ 1;
Phép toán NOT (~) trong phép toán bit của JavaScript
Decimal | Binary |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
Mô hình
var x = ~5;
Di chuyển trái (<<), lấp đầy bằng số không trong phép toán bit trong JavaScript
Đây là di chuyển trái được lấp đầy bằng số không. Một hoặc nhiều số không từ bên phải được đẩy vào, số bit bên trái nhất được loại bỏ:
Decimal | Binary |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
Mô hình
var x = 5 << 1;
Di chuyển phải (>>), giữ dấu trong phép toán bit trong JavaScript
Đây là di chuyển phải giữ dấu. Số bit bên trái nhất được đẩy vào từ bên trái, số bit bên phải nhất được di chuyển ra:
Decimal | Binary |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
Mô hình
var x = -5 >> 1;
Di chuyển phải (>>>), lấp đầy bằng số không trong JavaScript
Đây là di chuyển phải được lấp đầy bằng số không. Một hoặc nhiều số không từ bên trái được đẩy vào, số bit bên phải nhất được di chuyển ra:
Decimal | Binary |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
Mô hình
var x = 5 >>> 1;
Số nguyên có dấu 32-bit (số binary)
Việc chỉ thiết lập một bit trong số nguyên 32-bit rất dễ hiểu:
Biểu diễn nhị phân | Giá trị thập phân |
---|---|
00000000000000000000000000000001 | 1 |
00000000000000000000000000000010 | 2 |
00000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
Cài đặt thêm một số số vị để tiết lộ mẫu nhị phân:
Biểu diễn nhị phân | Giá trị thập phân |
---|---|
00000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000101000 | 40 (32 + 8) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
Số âm là mã bổ sung của số dương thêm 1:
Biểu diễn nhị phân | Giá trị thập phân |
---|---|
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
11111111111111111111111111011001 | -41 |
Chuyển đổi từ hệ thập phân sang hệ nhị phân
Mô hình
function dec2bin(dec){ return (dec >>> 0).toString(2); }
Chuyển đổi từ hệ nhị phân sang hệ thập phân
Mô hình
function bin2dec(bin){ return parseInt(bin, 2).toString(10); }
- Trang trước JS giải cấu trúc
- Trang tiếp theo JS biểu thức chính quy