Operasi Bitwise JavaScript
Operator Bitwise JavaScript
Operator | Name | Description |
---|---|---|
& | AND | Sets each bit to 1 if both bits are 1 |
| | OR | Sets each bit to 1 if one of two bits is 1 |
^ | XOR | Sets each bit to 1 if only one of two bits is 1 |
~ | NOT | Inverts all the bits |
<< | Zero fill left shift | Shifts left by pushing zeros in from the right and let the leftmost bits fall off |
>> | Signed right shift | Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off |
>>> | Zero fill right shift | Shifts right by pushing zeros in from the left, and let the rightmost bits fall off |
Contoh
Operation | Result | Same as | Result |
---|---|---|---|
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 Menggunakan 32 bit Bitwise Operand
JavaScript menyimpan angka sebagai 64 bit angka floating point, tetapi semua operasi bitwise dilakukan pada angka biner 32 bit.
Sebelum operasi bitwise dilakukan, JavaScript mengonversi angka menjadi bilangan bulat bertanda 32 bit.
Setelah operasi bitwise dilakukan, hasilnya diubah kembali menjadi 64 bit angka JavaScript.
Contoh di atas menggunakan 4 bit bilangan biner unsigned. Karena itu ~ 5 mengembalikan 10.
Karena JavaScript menggunakan bilangan bulat bertanda 32 bit, itu tidak akan mengembalikan 10. Ini akan mengembalikan -6.
00000000000000000000000000000101 (5)
11111111111111111111111111111111010 (~5 = -6)
Bilangan bulat bertanda menggunakan bit paling kiri sebagai tanda minus.
Sedikit demi sedikit DAN
Ketika AND bitwise dilakukan pada sepasang bit, ia mengembalikan 1 jika kedua bit adalah 1.
Operasi | Hasil |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
Operasi | Hasil |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Sedikit demi sedikit ATAU
Ketika bitwise OR dilakukan pada sepasang bit, ia mengembalikan 1 jika salah satu bitnya adalah 1:
Operasi | Hasil |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Operasi | Hasil |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Bitwise XOR
Ketika XOR bitwise dilakukan pada sepasang bit, ia mengembalikan 1 jika bitnya berbeda:
Operasi | Hasil |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
Operasi | Hasil |
---|---|
1111^0000 | 1111 |
1111^0001 | 1110 |
1111^0010 | 1101 |
1111^0100 | 1011 |
JavaScript Sedikit demi sedikit DAN (&)
Bitwise AND mengembalikan 1 hanya jika kedua bit adalah 1:
Desimal | biner |
---|---|
5 | 00000000000000000000000000000000101 |
1 | 0000000000000000000000000000000001 |
5 & 1 | 000000000000000000000000000000001 (1) |
Contoh
let x = 5 & 1;
JavaScript Bitwise ATAU (|)
Bitwise OR mengembalikan 1 jika salah satu bitnya adalah 1:
Desimal | biner |
---|---|
5 | 00000000000000000000000000000000101 |
1 | 0000000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
Contoh
let x = 5 | 1;
JavaScript Bitwise XOR (^)
Bitwise XOR mengembalikan 1 jika bitnya berbeda:
Desimal | biner |
---|---|
5 | 00000000000000000000000000000000101 |
1 | 0000000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
Contoh
let x = 5 ^ 1;
JavaScript Bitwise TIDAK (~)
Desimal | biner |
---|---|
5 | 00000000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
Contoh
let x = ~5;
JavaScript (Isi Nol) Pergeseran Kiri Bitwise (<<)
Ini adalah shift kiri tanpa isi. Satu atau lebih bit nol didorong masuk dari kanan, dan bit paling kiri jatuh:
Desimal | biner |
---|---|
5 | 00000000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
Contoh
let x = 5 << 1;
JavaScript (Sign Preserving) Bitwise Right Shift (>>)
Ini adalah tanda melestarikan pergeseran kanan. Salinan bit paling kiri didorong masuk dari kiri, dan bit paling kanan jatuh:
Desimal | biner |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
Contoh
let x = -5 >> 1;
JavaScript (Isi Nol) Shift Kanan (>>>)
Ini adalah shift kanan tanpa isi. Satu atau lebih bit nol didorong masuk dari kiri, dan bit paling kanan jatuh:
Desimal | biner |
---|---|
5 | 00000000000000000000000000000000101 |
5 >>> 1 | 0000000000000000000000000000000010 (2) |
Contoh
let x = 5 >>> 1;
Bilangan Biner
Angka biner dengan hanya satu set bit mudah dimengerti:
Representasi Biner | Nilai desimal |
---|---|
0000000000000000000000000000000001 | 1 |
0000000000000000000000000000000010 | 2 |
00000000000000000000000000000000100 | 4 |
000000000000000000000000000000001000 | 8 |
000000000000000000000000000000000000 | 16 |
0000000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
Menyetel beberapa bit lagi mengungkapkan pola biner:
Representasi Biner | Nilai desimal |
---|---|
00000000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000001101 | 13 (8 + 4 + 1) |
0000000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
Bilangan biner JavaScript disimpan dalam format pelengkap dua.
Ini berarti bahwa angka negatif adalah BUKAN bitwise dari angka ditambah 1:
Representasi Biner | Nilai desimal |
---|---|
00000000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000000000110 | 6 |
11111111111111111111111111111010 | -6 |
000000000000000000000000000101000 | 40 |
11111111111111111111111111111011000 | -40 |
Mengubah Desimal ke Biner
Contoh
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
Mengubah Biner ke Desimal
Contoh
function bin2dec(bin){
return parseInt(bin, 2).toString(10);
}