Các hoạt động bitwise javascriptBitwise Operations
Các toán tử bitwise javascript
Không có giá trị | VÀ | Đặt mỗi bit thành 1 nếu cả hai bit là 1 |
| | HOẶC | Đặ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ỉ có một trong hai bit là 1 |
~ | KHÔNG PHẢI | Đảo ngược tất cả các bit |
> | Đã ký đúng sự thay đổi | Dịch chuyển phải bằng cách đẩy các bản sao của bit ngoài cùng bên trái từ bên trái và để các bit ngoài cùng bên phải rơi ra |
>>> | Không điền đúng ca | Dịch chuyển phải bằng cách đẩy các số không vào từ bên trái và để các bit ngoài cùng bên phải rơi ra |
Ví dụ
Giống như | 1 | 5 & 1 | 0101 & 0001 |
& nbsp; 0001 | 5 | 5 | 1 | 0101 | 0001 |
& nbsp; 0101 | 10 | ~ 5 | & nbsp; ~ 0101 |
& nbsp; 1010 | 10 | 5 > 1 | & nbsp; 0100 |
5 >> 1
0101 >> 1
& nbsp; 0010
5 >>> 1
0101 >>> 1
JavaScript sử dụng 32 bit bitwise
JavaScript lưu trữ các số dưới dạng 64 bit số điểm nổi, nhưng tất cả các hoạt động bitwise được thực hiện trên 32 bit số nhị phân.
Trước khi hoạt động bitwise được thực hiện, JavaScript đã chuyển đổi số thành 32 bit số nguyên đã ký.
Sau khi hoạt động bitwise được thực hiện, kết quả được chuyển đổi trở lại thành 64 bit số JavaScript.
Các ví dụ trên sử dụng 4 bit số nhị phân không dấu. Vì điều này ~ 5 trả về 10.
Vì JavaScript sử dụng 32 bit số nguyên đã ký, nên nó sẽ không trả về 10. Nó sẽ trả về -6.
Giống như | 0 |
5 & 1 | 0 |
0101 & 0001 | 0 |
& nbsp; 0001 | 1 |
5 | 1
Giống như | 0000 |
5 & 1 | 0001 |
0101 & 0001 | 0010 |
& nbsp; 0001 | 0100 |
5 | 1
0101 | 0001
Vì JavaScript sử dụng 32 bit số nguyên đã ký, nên nó sẽ không trả về 10. Nó sẽ trả về -6.
Giống như | 0 |
5 & 1 | 0101 & 0001 |
& nbsp; 0001 | 1 |
5 | 1 | 1 |
5 | 1
Giống như | 1111 |
5 & 1 | 1111 |
0101 & 0001 | 1111 |
& nbsp; 0001 | 1111 |
5 | 1
0101 | 0001
Vì JavaScript sử dụng 32 bit số nguyên đã ký, nên nó sẽ không trả về 10. Nó sẽ trả về -6.
Giống như | 0 |
5 & 1 | 0101 & 0001 |
& nbsp; 0001 | 1 |
5 | 1 | 0101 | 0001 |
5 | 1
Giống như | 1111 |
5 & 1 | 1110 |
0101 & 0001 | 1101 |
& nbsp; 0001 | 1011 |
5 | 1
0101 | 0001
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
Giống như | 5 & 1 |
0101 & 0001
& nbsp; 0001
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
& nbsp; 0001 | 5 | 1 |
0101 | 0001
& nbsp; 0101
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
& nbsp; 1010 | 5 >> 1JavaScript sử dụng 32 bit bitwise |
00000000000000000000000000000001 | 1 |
00000000000000000000000000000010 | 2 |
00000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
JavaScript lưu trữ các số dưới dạng 64 bit số điểm nổi, nhưng tất cả các hoạt động bitwise được thực hiện trên 32 bit số nhị phân.
00000000000000000000000000000101 | JavaScript lưu trữ các số dưới dạng 64 bit số điểm nổi, nhưng tất cả các hoạt động bitwise được thực hiện trên 32 bit số nhị phân. |
00000000000000000000000000001101 | Trước khi hoạt động bitwise được thực hiện, JavaScript đã chuyển đổi số thành 32 bit số nguyên đã ký. |
00000000000000000000000000101101 | Sau khi hoạt động bitwise được thực hiện, kết quả được chuyển đổi trở lại thành 64 bit số JavaScript. |
Các ví dụ trên sử dụng 4 bit số nhị phân không dấu. Vì điều này ~ 5 trả về 10.
Vì JavaScript sử dụng 32 bit số nguyên đã ký, nên nó sẽ không trả về 10. Nó sẽ trả về -6.
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000000110 | 6 |
11111111111111111111111111111010 | -6 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
Chuyển đổi thập phân thành nhị phân
Chuyển đổi nhị phân thành thập phân
Thí dụ
hàm bin2dec [bin] {& nbsp; trả về parseInt [bin, 2] .toString [10]; }
return parseInt[bin, 2].toString[10];
}
Hãy tự mình thử »