Home » Javascript » Operasi Bitwise JavaScript: Cara Membuat dan Contoh Scriptnya

Operasi Bitwise JavaScript: Cara Membuat dan Contoh Scriptnya

by Catur Kurnia Sari
by Catur Kurnia Sari

Operator Bitwise JavaScript

OperatorNamaDeskripsi
&ANDMengatur setiap bit ke 1 jika kedua bit adalah 1
|ORMengatur setiap bit ke 1 jika salah satu dari dua bit adalah 1
^XORMengatur setiap bit ke 1 jika salah satu dari dua bit adalah 1
~NOTMembalik semua bit
<<Zero fill left shiftMenggeser ke kiri dengan mendorong angka nol dari kanan dan membiarkan bit paling kiri terlepas
>>Signed right shiftMenggeser ke kanan dengan mendorong salinan dari bit paling kiri dari kiri, dan membiarkan bit paling kanan terlepas
>>>Zero fill right shiftGeser ke kanan dengan mendorong angka nol dari kiri, dan biarkan bit paling kanan terlepas

Contoh

OperasiHasilSama sepertiHasil
5 & 110101 & 0001 0001
5 | 150101 | 0001 0101
~ 510 ~0101 1010
5 << 1100101 << 1 1010
5 ^ 140101 ^ 0001 0100
5 >> 120101 >> 1 0010
5 >>> 120101 >>> 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:

OperasiHasil
0 & 00
0 & 10
1 & 00
1 & 11

Contoh 4 bit:

OperasiHasil
1111 & 00000000
1111 & 00010001
1111 & 00100010
1111 & 01000100

Bitwise OR

Ketika bitwise OR dilakukan pada sepasang bit, ia mengembalikan nilai 1 jika salah satu bit adalah 1:

Contoh satu bit:

OperasiHasil
0 | 00
0 | 1
1 | 01
1 | 11

Contoh 4 bit:

OperasiHasil
1111 | 00001111
1111 | 00011111
1111 | 00101111
1111 | 01001111

Bitwise XOR

Ketika operasi bitwise XOR dilakukan pada sepasang bit, ia mengembalikan 1 jika bit berbeda.

Contoh satu bit:

OperasiHasil
0 ^ 00
0 ^ 1
1 ^ 01
1 ^ 1

Contoh 4 bit:

OperasiHasil
1111 ^ 00001111
1111 ^ 00011110
1111 ^ 00101101
1111 ^ 01001011

JavaScript Bitwise AND (&)

Bitwise AND mengembalikan 1 hanya jika kedua bit adalah 1:

DesimalBiner
500000000000000000000000000000101
100000000000000000000000000000001
5 & 100000000000000000000000000000001 (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:

DesimalBiner
500000000000000000000000000000101
100000000000000000000000000000001
5 | 100000000000000000000000000000101 (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:

DesimalBiner
500000000000000000000000000000101
100000000000000000000000000000001
5 ^ 100000000000000000000000000000100 (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 (~)

DesimalBiner
500000000000000000000000000000101
~511111111111111111111111111111010 (-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.

DesimalBiner
500000000000000000000000000000101
5 << 100000000000000000000000000001010 (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:

DesimalBiner
-511111111111111111111111111111011
-5 >> 111111111111111111111111111111101 (-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:

DesimalBiner
500000000000000000000000000000101
5 >>> 100000000000000000000000000000010 (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 RepresentationNilai Desimal
000000000000000000000000000000011
000000000000000000000000000000102
000000000000000000000000000001004
000000000000000000000000000010008
0000000000000000000000000001000016
0000000000000000000000000010000032
0000000000000000000000000100000064

Mengatur beberapa bit lagi akan mengungkapkan pola biner:

Binary RepresentationNilai Desimal
000000000000000000000000000001015 (4 + 1)
0000000000000000000000000000110113 (8 + 4 + 1)
0000000000000000000000000010110145 (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 RepresentationNilai Desimal
000000000000000000000000000001015
11111111111111111111111111111011-5
000000000000000000000000000001106
11111111111111111111111111111010-6
0000000000000000000000000010100040
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>

You may also like