Toán tử | Tên | Mô tả |
---|---|---|
& | AND | Đặt mỗi bit thành 1 nếu cả hai bit là 1 |
| | OR | Đặt mỗi bit thành 1 nếu một trong hai bit là 1 |
^ | XOR | Đặt mỗi bit thành 1 nếu chỉ một trong hai bit là 1 |
~ | NOT | Đảo ngược tất cả các bit |
<< | Zero fill left shift | Trượt sang trái bằng cách đẩy các số 0 từ bên phải và để các bit ngoài cùng bên trái rơi ra |
>> | Signed right shift | Trượt sang phải bằng cách đẩy các bản sao của bit ngoài cùng bên trái vào bên trái và để các bit ngoài cùng bên phải rơi ra |
>>> | Zero fill right shift | Trượt sang phải bằng cách đẩy các số 0 từ bên trái và để các bit ngoài cùng bên phải rơi ra |
Toán tử | Kết quả | Giống với | Kết quả |
---|---|---|---|
5 & 1 | 1 | 0101 & 0001 | 0001 |
5 | 1 | 5 | 0101 | 0001 | 0101 |
~ 5 | 10 | ~0101 | 1010 |
5 << 1 | 10 | 0101 << 1 | 1010 |
5 ^ 1 | 4 | 0101 ^ 0001 | 0100 |
5 >> 1 | 2 | 0101 >> 1 | 0010 |
5 >>> 1 | 2 | 0101 >>> 1 | 0010 |
JavaScript chứa các số dưới dạng các số thực dấu phẩy dộng 64 bits, nhưng tất cả các toán tử bitwise được thực hiện trên các số nhị phân 32 bit.
Trước khi một toán tử bitwise được thực hiện, JavaScript chuyển các số thành các số nguyên có dấu 32 bit.
Sau khi toán tử bitwise được thực hiện, kết quả được chuyển lại thành các số JavaScript 64 bit.
Tip: Ví dụ trên sử dụng các số nhị phân 4 bits. Bởi vì điều này ~ 5 trả về 10.
Khi JavaScript sử dụng số nguyên có dấu 32 bits, nó sẽ không trả về 10. Nó sẽ trả về -6.
00000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5 = -6)
Một số nguyên có dấu sử dụng bit ngoài cùng phía bên trái như một dấu trừ.
Khi một bitwise AND được thực hiện trên một cặp bit, nó sẽ trả về 1 nếu cả hai đều là 1.
ví dụ một bit:
Toán tử | Kết quả |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
Toán tử | Kết quả |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Khi một bitwise OR được thực hiện trên một cặp bit, nó trả về 1 nếu một trong các bit là 1:
ví dụ 1 bit:
Toán tử | Kết quả |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Toán tử | Kết quả |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Khi một bitwise XOR được thực hiện trên một cặp bit, nó trả về một nếu các bit khác nhau:
ví dụ 1 bit:
Toán tử | Kết quả |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
Toán tử | Kết quả |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
Bitwise AND chỉ trả về 1 nếu cả hai bit là 1:
Thập phân | Nhị phân |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001 (1) |
var x = 5 & 1;
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Bitwise AND</h2>
<p id="demo">My First Paragraph.</p>
<script>
document.getElementById("demo").innerHTML = 5 & 1;
</script>
</body>
</html>
Bitwise OR trả về 1 nếu một trong các bit là 1:
Thập phân | Nhị phân |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
var x = 5 | 1;
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Bitwise OR</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = 5 | 1;
</script>
</body>
</html>
Bitwise XOR trả về 1 nếu các bit khác nhau:
Thập phân | Nhị phân |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
var x = 5 ^ 1;
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Bitwise XOR</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = 5 ^ 1;
</script>
</body>
</html>
Thập phân | Nhị phân |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
var x = ~5;
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Bitwise NOT</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = ~ 5;
</script>
</body>
</html>
Đây là một dấu trượt số không bên trái. Một hoặc nhiều zero bits được đẩy vào từ bên phải, và một bits ngoài cùng bên trái rơi ra:
Thập phân | Nhị phân |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
var x = 5 << 1;
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Bitwise Left</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = 5 << 1;
</script>
</body>
</html>
Đây là một dấu bảo toàn mỗi khi trượt bên phải. Bản sao của ngoài cùng phía bên trái được đẩy vào từ bên trái, và bit ngoài cùng bên phải rơi ra:
Thập phân | Nhị phân |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
var x = 5 >>> 1;
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Bitwise Right</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = 5 >>> 1;
</script>
</body>
</html>
Các số nhị phân chỉ với một bit được đặt thì dễ hiểu:
Đại 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 |
Đặt thêm một vài bit cho thấy mẫu nhị phân:
Đại diện nhị phân | Giá trị thập phân |
---|---|
00000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000001101 | 13 (8 + 4 + 1) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
Các số nhị phân JavaScript được lưu trữ trong hai định dạng bổ sung.
Điều này nghĩa là một số âm là bitwise NOT của số cộng 1:
Đại diện nhị phân | Giá trị thập phân |
---|---|
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000000110 | 6 |
11111111111111111111111111111010 | -6 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Convert Decimal to Binary</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = dec2bin(-5);
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
</script>
</body>
</html>
function bin2dec(bin){
return parseInt(bin, 2).toString(10);
}
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Convert Binary to Decimal</h2>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = bin2dec(101);
function bin2dec(bin){
return parseInt(bin, 2).toString(10);
}
</script>
</body>
</html>
Ứng Dụng Học
Theo dõi cập nhật nội dung học trên Youtube & Facebook
Thông Tin Liên Hệ
Công Ty Cổ Phần Phát Triển Công Nghệ Gozic.
Website: https://gozic.vn
SĐT: 096 - 70 25 996
Email: ziczacgroup@gmail.com
Thiết kế webiste chuyên nghiệp
Thiết kế phần mềm quản trị
Thiết kế ứng dụng Android
Thiết kế ứng dụng IOS
Thiết kế Web App
Hỗ trợ Digital Marketing
Hỗ trợ quảng cáo Google Ads
Hỗ trợ quảng cáo Facebook Ads
Hỗ trợ SEO Website