Section Artikel
- 1 Operator Bitwise JavaScript
- 2 JavaScript Menggunakan 32 bit Bitwise Operand
- 3 Bitwise AND
- 4 Bitwise OR
- 5 Bitwise XOR
- 6 JavaScript Bitwise AND (&)
- 7 JavaScript Bitwise OR (|)
- 8 JavaScript Bitwise XOR (^)
- 9 JavaScript Bitwise NOT (~)
- 10 JavaScript (Zero Fill) Bitwise Left Shift (<<)
- 11 JavaScript (Sign Preserving) Bitwise Right Shift (>>)
- 12 JavaScript (Zero Fill) Right Shift (>>>)
- 13 Bilangan Biner
- 14 Mengonversi Desimal ke Biner
- 15 Mengonversi Biner ke Desimal
Operator Bitwise JavaScript
Operator | Nama | Deskripsi |
---|---|---|
& | AND | Mengatur setiap bit ke 1 jika kedua bit adalah 1 |
| | OR | Mengatur setiap bit ke 1 jika salah satu dari dua bit adalah 1 |
^ | XOR | Mengatur setiap bit ke 1 jika salah satu dari dua bit adalah 1 |
~ | NOT | Membalik semua bit |
<< | Zero fill left shift | Menggeser ke kiri dengan mendorong angka nol dari kanan dan membiarkan bit paling kiri terlepas |
>> | Signed right shift | Menggeser ke kanan dengan mendorong salinan dari bit paling kiri dari kiri, dan membiarkan bit paling kanan terlepas |
>>> | Zero fill right shift | Geser ke kanan dengan mendorong angka nol dari kiri, dan biarkan bit paling kanan terlepas |
Contoh
Operasi | Hasil | Sama seperti | Hasil |
---|---|---|---|
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 32 bit angka biner.
Sebelum operasi bitwise dilakukan, JavaScript mengonversi angka menjadi 32 bit bilangan bulat bertanda.
Setelah operasi bitwise dilakukan, hasilnya diubah kembali menjadi 64 bit nomor JavaScript.
Contoh di atas menggunakan 4 bit unsigned binary number.
Karena ini ~ 5 mengembalikan 10. Karena JavaScript menggunakan 32 bit bilangan bulat yang ditandatangani, maka tidak akan mengembalikan 10. Justru akan mengembalikan -6.
00000000000000000000000000000101 (5)
11111111111111111111111111111010 (~ 5 = -6)
Bilangan bulat bertanda menggunakan bit paling kiri sebagai tanda minus.
Bitwise AND
Ketika suatu bitwise AND dilakukan pada sepasang bit, maka akan mengembalikan 1 jika kedua bit adalah 1.
Contoh satu bit:
Operasi | Hasil |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
Contoh 4 bit:
Operasi | Hasil |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Bitwise OR
Ketika bitwise OR dilakukan pada sepasang bit, ia mengembalikan nilai 1 jika salah satu bit adalah 1:
Contoh satu bit:
Operasi | Hasil |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Contoh 4 bit:
Operasi | Hasil |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Bitwise XOR
Ketika operasi bitwise XOR dilakukan pada sepasang bit, ia mengembalikan 1 jika bit berbeda.
Contoh satu bit:
Operasi | Hasil |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
Contoh 4 bit:
Operasi | Hasil |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
JavaScript Bitwise AND (&)
Bitwise AND mengembalikan 1 hanya jika kedua bit adalah 1:
Desimal | Biner |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001 (1) |
Contoh:
<!DOCTYPE html> <html> <body> <h2>JavaScript Bitwise AND</h2> <p id="demo">Paragraf pertamaku.</p> <script> document.getElementById("demo").innerHTML = 5 & 1; </script> </body> </html>
JavaScript Bitwise OR (|)
Bitwise OR mengembalikan 1 jika salah satu bitnya 1:
Desimal | Biner |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 | 1 | 00000000000000000000000000000101 (5) |
Contoh:
<!DOCTYPE html> <html> <body> <h2>JavaScript Bitwise OR</h2> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = 5 | 1; </script> </body> </html>
JavaScript Bitwise XOR (^)
Bitwise XOR mengembalikan 1 jika bitnya berbeda:
Desimal | Biner |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 ^ 1 | 00000000000000000000000000000100 (4) |
Contoh:
<!DOCTYPE html> <html> <body> <h2>JavaScript Bitwise XOR</h2> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = 5 ^ 1; </script> </body> </html>
JavaScript Bitwise NOT (~)
Desimal | Biner |
---|---|
5 | 00000000000000000000000000000101 |
~5 | 11111111111111111111111111111010 (-6) |
Contoh:
<!DOCTYPE html> <html> <body> <h2>JavaScript Bitwise NOT</h2> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = ~ 5; </script> </body> </html>
JavaScript (Zero Fill) Bitwise Left Shift (<<)
Ini adalah shift kiri pengisian nol. Satu atau lebih bit nol didorong dari kanan, dan bit paling kiri akan terlepas.
Desimal | Biner |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
Contoh:
<!DOCTYPE html> <html> <body> <h2>JavaScript Bitwise Left</h2> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = 5 << 1; </script> </body> </html>
JavaScript (Sign Preserving) Bitwise Right Shift (>>)
Ini adalah Sign Preserving pergeseran kanan. Salinan bit paling kiri didorong dari kiri, dan bit paling kanan terlepas:
Desimal | Biner |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
Contoh:
<!DOCTYPE html> <html> <body> <h2>JavaScript Sign Preserving Bitwise Right.</h2> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = -5 >> 1; </script> </body> </html>
JavaScript (Zero Fill) Right Shift (>>>)
Ini adalah shift kanan pengisian nol. Satu atau lebih bit nol didorong dari kiri, dan bit paling kanan jatuh:
Desimal | Biner |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
Contoh:
<!DOCTYPE html> <html> <body> <h2>JavaScript Bitwise Right</h2> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = 5 >>> 1; </script> </body> </html>
Bilangan Biner
Bilangan biner dengan hanya satu set bit mudah dipahami:
Binary Representation | Nilai Desimal |
---|---|
00000000000000000000000000000001 | 1 |
00000000000000000000000000000010 | 2 |
00000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
Mengatur beberapa bit lagi akan mengungkapkan pola biner:
Binary Representation | Nilai Desimal |
---|---|
00000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000001101 | 13 (8 + 4 + 1) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
Bilangan biner JavaScript disimpan dalam format komplemen dua.
Ini berarti bahwa angka negatif adalah bitwise BUKAN dari angka tersebut ditambah 1:
Binary Representation | Nilai Desimal |
---|---|
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000000110 | 6 |
11111111111111111111111111111010 | -6 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
Mengonversi Desimal ke Biner
Contoh:
<!DOCTYPE html> <html> <body> <h2> JavaScript Ubah Desimal ke Biner </h2> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = dec2bin(-5); function dec2bin(dec){ return (dec >>> 0).toString(2); } </script> </body> </html>
Mengonversi Biner ke Desimal
Contoh:
<!DOCTYPE html> <html> <body> <h2> JavaScript Mengonversi Biner ke Desimal </h2> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = bin2dec(101); function bin2dec(bin){ return parseInt(bin, 2).toString(10); } </script> </body> </html>