Mengenal Operator Bitwise Pada Pemrograman Javascript

Seperti halnya bahasa C dan turunannya, termasuk C++ dan Javascript mendukung penuh operator bitwise.

Operator bitwise bertujuan untuk melakukan manipulasi dalam bentuk bit,

Beberapa jenis operator bitwise adalah:

  • AND (&)
  • OR (|)
  • XOR (^)
  • NOT (~)
  • Right Shift (>>)
  • Left Shift (<<)
  • Zero-Fill Right Shift (>>>)

And, Or, dan Not

Jika diperhatikan, perintah and (&), or (|) dan not (~) sama dengan operator logika.

Hanya saja operator bitwise menangani operand dalam bentuk bit, sedangkan operator logika menangani operand dalam bentuk nilai.

Contoh:

alert(7 & 23)  // 7
alert(7 | 23)  // 23
alert(~13)     // -14

Dapat dari mana hasil tersebut?

Ingat bahwa false bernilai 0 sedangkan true bernilai 1. Ingat pula aturan pada operator logika tentang and, or dan not. Sekarang perhatikan penggunakan ketiga operator di atas:

Operator And (&)

NilaiNilai dalam Biner
70000000000000111
230000000000010111
Hasil0000000000000111

Hasil diatas menunjukan 0000000000000111 yang merupakan biner dari 7

Operator Or (|)

NilaiNilai dalam Biner
70000000000000111
230000000000010111
Hasil0000000000010111

Hasil diatas menunjukan 0000000000010111 yang merupakan biner dari 23

Operator Not (~)

NilaiNilai dalam Biner
130000000000001101
Hasil1111111111110010

Hasil diatas menunjukan 1111111111110010 yang merupakan biner dari -14

Operator Xor (^)

Xor atau Exclusive OR adalah operasi yang bernilai 1 (true) jika satu operandnya (bukan salah satu) bernilai true, selain itu akan menghasilkan nilai 0 (false).

alert(4 ^ 3)  // 7

Perhatikan tabel berikut untuk lebih jelasnya.

NilaiNilai dalam Biner
30000000000000011
40000000000000100
Hasil0000000000000111

Hasil diatas menunjukan 0000000000000111 yang merupakan biner dari 7

Operator Right Shift (»)

Shift Right digunakan untuk memindahkan bit ke sisi kanan senilai n base

// 2 base
alert(25 >> 2)   // 6

// 3 base
alert(-35 >> 3)  // -5
NilaiNilai dalam Biner
250000000000011001
25 » 20000000000000110
-351111111111011101
-35 » 31111111111111011

Hasil 25 >> 2 diatas menunjukan 0000000000000110 yang merupakan biner dari 6. Sedangkan hasil -35 >> 3 diatas menunjukan 1111111111111011 yang merupakan biner dari -5.

Operator Left Shift («)

Hampir sama seperti shift right, hanya saja shift left memindahkan ke sisi kiri senilai n base

alert(25 << 2)   // 100
alert(-35 << 3)  // -280
NilaiNilai dalam Biner
250000000000011001
25 « 20000000001100100
-351111111111011101
-35 » 31111111011101000

Hasil 25 << 2 diatas menunjukan 0000000001100100 yang merupakan biner dari 100. Sedangkan hasil -35 << 3 diatas menunjukan 1111111011101000 yang merupakan biner dari -280.

Terlihat bahwa left shift ketika melakukan pemindahan pada bilangan negatif, akan mengisi kekosongan pemindahan senilai 0, perhatikan 1111111011101000.

Berbeda dengan right shift yang mengisinya dengan 1, perhatikan 1111111111111011.

Zero-Fill Right Shift

Hampir sama dengan Right Shift, hanya saja ketika melakukan pemindahan bilangan negatif akan mengisi kekosongan dengan nilai 0 bukan 1.

alert(25 >>> 2)   // 6
alert(-35 >>> 3)  // 536870907
NilaiNilai dalam Biner
250000000000011001
25 »> 20000000000000110
-351111111111011101
-35 »> 30001111111111011

Hasil 25 >>> 2 sama dengan 25 >> 2, namun pada bilangan negatif -35 >>> 3 bernilai 536870907, berbeda dengan -35 >> 3.

Akhir Kata

Itulah beberapa operasi dalam operator bitwise. Penggunaannya sendiri memang sangat jarang ditemui. Namun pada hal-hal tertentu yang harus ditangani secara binary, operator bitwise dapat diandalkan.