Operator bitwise mudah digunakan dan dapat menghasilkan kode cepat. Cari tahu apa itu dan bagaimana menggunakannya.

Operator bitwise adalah operator yang bekerja pada level biner. Mereka seringkali sangat cepat untuk dieksekusi dan biasanya bertindak pada dua operan.

Anda dapat menggunakan operator bitwise untuk memanipulasi angka biner, mengoptimalkan kode, mengompres data, dan menerapkan teknik untuk grafik atau pemrograman game. Seperti kebanyakan bahasa pemrograman lainnya, JavaScript memiliki dukungan yang sangat baik untuk operasi bitwise.

Apa Itu Operator?

Sebagian besar bahasa pemrograman menggunakan konsep "operator"—sebuah simbol yang memberi tahu juru bahasa untuk melakukan operasi matematika, relasional, atau logis tertentu.

ada banyak berbagai jenis operator JavaScript Anda harus menyadari, dari yang terlihat seperti operator matematika standar, seperti "+", hingga operator yang membandingkan dua nilai. Operator bitwise adalah kumpulan khusus yang berhubungan dengan bilangan biner.

Bitwise DAN (&) Operator

JavaScript bitwise DAN (&) operator membandingkan bit yang sesuai dari dua operan biner — angka yang hanya berisi 0 dan 1. Untuk setiap pasang bit input, bit output yang sesuai adalah “1” jika kedua bit input adalah “1” atau “0” jika tidak.

Berikut sintaks operator AND bitwise:

a & b

Dalam contoh ini, A Dan B adalah operan tempat Anda melakukan operasi bitwise.

Berikut cara kerja operator bitwise AND:

  1. Operasi AND berlaku untuk setiap pasangan bit yang sesuai A Dan B dari kanan ke kiri.
  2. Jika kedua bit adalah 1, hasilnya adalah 1. Jika salah satu bit adalah 0, hasilnya adalah 0.
  3. Hasilnya adalah angka baru dimana setiap bit merepresentasikan hasil dari operasi AND pada bit-bit yang bersesuaian A Dan B.

Misalnya:

membiarkan a = 50; // 00110010
membiarkan b = 100; // 01100100

membiarkan hasil = a & b; // 00100000

menghibur.log (hasil); // 32

Pada contoh di atas, A adalah 50 dalam desimal, setara dengan bilangan biner 00110010, dan B adalah 100 dalam desimal, setara dengan bilangan biner 01100100. Operator AND membandingkan setiap pasangan bit yang sesuai dari kanan ke kiri dan menghasilkan angka biner 00100000, yaitu 32 dalam desimal.

Bitwise ATAU (|) Operator

bitwise ATAU (|) operator membandingkan bit yang sesuai dari dua operan dan mengembalikan "1" jika salah satu atau kedua bit adalah "1" dan "0" jika kedua bit adalah "0".

Inilah sintaks dari operator OR bitwise:

sebuah | B

Di mana A Dan B adalah operan dari operasi.

Operator bitwise OR (|) bekerja dengan cara yang sama seperti operator AND bitwise. Satu-satunya perbedaan adalah operator OR mengembalikan "1" jika "salah satu" dari bit adalah "1" dan "0" jika bit "keduanya" adalah "0".

Misalnya:

membiarkan a = 50; // 00110010
membiarkan b = 100; // 01100100

membiarkan hasil = a | B; // 01110110

menghibur.log (hasil); // 118

Dalam contoh di atas, operator OR bitwise membandingkan setiap pasangan bit dari kanan ke kiri (yaitu, 0 | 0 = 0, 0 | 1 = 1, 1 | 1 = 1, dan seterusnya). Angka biner yang dihasilkan adalah 01110110, yaitu 118 dalam desimal.

Bitwise XOR (^) Operator

XOR bitwise (^) operator membandingkan bit yang sesuai dari dua operan dan mengembalikan "1" jika salah satu tetapi tidak kedua operan adalah "1" dan "0" jika kedua operan adalah "1" atau "0".

Berikut sintaks operator XOR bitwise:

a^b

Di mana A Dan B adalah operan dari operasi.

Operator bitwise XOR bekerja dengan cara yang sama seperti operator bitwise OR dan AND. Satu-satunya perbedaan adalah mengembalikan "1" jika "salah satu tetapi tidak keduanya" dari operan adalah "1" dan "0" jika "keduanya" dari operan adalah "1" atau "0".

Misalnya:

membiarkan a = 50; // 00110010
membiarkan b = 100; // 01100100

membiarkan hasil = a ^ b; // 01010110

menghibur.log (hasil); // 86

Dalam contoh di atas, operator XOR membandingkan setiap pasangan bit dari kanan ke kiri (yaitu, 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 1 = 0, dan seterusnya). Angka biner yang dihasilkan adalah 01010110, yaitu 86 dalam desimal.

Bitwise BUKAN (~) Operator

Bitwise TIDAK (~) operator adalah operator unary yang beroperasi pada bilangan bulat tunggal dengan membalikkan semua bitnya. Dengan kata lain, ini mengubah setiap bit "0" menjadi "1" dan setiap bit "1" menjadi "0".

Inilah sintaks dari operator NOT bitwise:

~c

Di mana C adalah operan.

Operator NOT bitwise bekerja dengan membalikkan semua bit operan, termasuk bit tanda.

Misalnya:

membiarkan c = 10; // 00001010
membiarkan d = -10; // 11110110

menghibur.log(~c); // 11110101
menghibur.log(~d); // 00001001

Dalam contoh di atas, operator NOT membalikkan semua bit (yaitu, 01, 10, dll.), termasuk bit tanda.

Shift Kiri (<

Operator shift kiri menggeser bit dari angka yang diberikan ke kiri. Operator mengambil dua operan: angka yang akan digeser dan jumlah bit yang akan digeser.

Berikut sintaks untuk operator shift kiri:

a<

Di mana A adalah operan untuk operator shift kiri, dan B adalah jumlah bit operator akan menggeser operan.

Operator shift kiri bekerja dengan menggeser setiap bit operan ke kiri dengan jumlah posisi yang ditentukan dan membuang kelebihan bit yang digeser ke kiri.

Misalnya:

membiarkan a = 50; // 00110010
membiarkan b = 2;

membiarkan hasil = a<// 11001000

menghibur.log (hasil); // 200

Pada contoh di atas, operator shift kiri menggeser 50 desimal dari biner 00110010 sebanyak dua tempat. Nilai biner yang dihasilkan adalah 11001000, yaitu 200 sebagai desimal.

Tanda-Menyebarkan Pergeseran Kanan (>>) Operator

Pergeseran kanan perambatan tanda (>>) menggeser bit angka ke kanan sambil mempertahankan tanda angka aslinya. Operator mengambil dua operan: angka yang akan digeser dan jumlah bit yang akan digeser.

Inilah sintaks untuk operator shift kanan yang menyebarkan tanda:

a>>b

Di mana A adalah operan untuk operator shift kanan, dan B adalah jumlah bit operator akan menggeser operan.

Operator shift kanan yang menyebarkan tanda bekerja mirip dengan operator shift kiri; satu-satunya perbedaan dalam mode operasi adalah bahwa pergeseran kanan mempertahankan tandanya.

Misalnya:

membiarkan a = -50; // 11001110
membiarkan b = 2;

membiarkan hasil = a>>b; // 11110011

menghibur.log (hasil); // -13

Pada contoh di atas, operator shift kanan menggeser desimal -50 (11001110) dua spasi ke kanan menghasilkan desimal -13 (11110011).

Pergeseran Kanan Tak Bertanda Tangan (>>>) Operator

Pergeseran kanan tak bertanda (>>>) operator menggeser bit angka ke kanan dengan sejumlah posisi tertentu dan mengisi ruang kosong di sebelah kiri dengan nol. Operator membuang kelebihan bit yang bergeser ke kanan.

Inilah sintaks untuk operator shift kanan yang tidak ditandatangani:

a>>>b

Di mana A adalah operan untuk operator shift kanan, dan B adalah jumlah bit operator akan menggeser operan.

Operator shift kanan yang tidak bertanda tangan bekerja sama dengan shift kanan. Namun, berbeda dengan operator shift kanan (>>), itu tidak mempertahankan tanda angka saat bergeser. Sebagai gantinya, ia memperlakukan angka sebagai bilangan bulat yang tidak ditandatangani dan mengisi bit paling kiri dengan nol.

Misalnya:

membiarkan a = -5; // 11111111 11111111 11111111 11111011
membiarkan b = 2;

membiarkan hasil = a >>> b; // 00111111 11111111 11111111 11111110

menghibur.log (hasil); // 1073741822

Dalam contoh ini, operator shift kanan yang tidak bertanda tangan menggeser "-5" dua spasi ke kanan, secara efektif menghilangkan tanda dan menghasilkan desimal "1073741822".

Aplikasi Operator Bitwise

Dengan memanipulasi bit individu dalam bilangan biner, operator bitwise dapat membuat fungsionalitas kompleks yang sulit atau tidak mungkin dicapai dengan operasi aritmatika tradisional.

Memahami cara menggunakan operator bitwise dapat membantu Anda membangun aplikasi web yang lebih efisien dan berperforma tinggi.