bitwise Operator di C: AND, OR, XOR, Shift & Melengkapi
Apa itu Bitwise Operator?
bitwise Operatorso digunakan untuk memanipulasi data pada level bit, yang juga disebut pemrograman level bit. Bitwise beroperasi pada satu atau beberapa pola bit atau angka biner pada level bit individualnya. Bitwise digunakan dalam perhitungan numerik untuk mempercepat proses perhitungan.
Berikut ini adalah daftar operator bitwise yang disediakan oleh bahasa pemrograman 'C':
Operator | Arti |
---|---|
& | Operator DAN Bitwise |
| | Operator ATAU Bitwise |
^ | Operator eksklusif bitwise ATAU |
~ | Komplemen Biner Satu Operator adalah operator unary |
<< | Operator shift kiri |
>> | Operator shift kanan |
Operator bitwise tidak bisa langsung diaplikasikan pada tipe data primitif seperti float, double, dan lain sebagainya. Selalu ingat satu hal bahwa operator bitwise paling banyak digunakan pada tipe data integer karena kompatibilitasnya.
Operator logika bitwise bekerja pada data bit per bit, dimulai dari bit paling tidak penting, yakni bit LSB yang merupakan bit paling kanan, menuju ke MSB (Most Significant Bit) yang merupakan bit paling kiri.
Hasil perhitungan operator logika bitwise ditunjukkan pada tabel di bawah ini.
x | y | x & y | x | kamu | x^y |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
Bitwise DAN
Ini adalah salah satu operator logika bitwise yang paling umum digunakan. Operator ini dilambangkan dengan satu tanda ampersand (&). Dua ekspresi integer ditulis di setiap sisi operator (&).
Hasil operasi AND bitwise adalah 1 jika kedua bit bernilai 1; jika tidak, hasilnya selalu 0.
Misalkan kita mempunyai 2 variabel op1 dan op2 dengan nilai sebagai berikut:
Op1 = 0000 1101 Op2 = 0001 1001
Hasil dari operasi AND pada variabel op1 dan op2 adalah
Result = 0000 1001
Seperti yang bisa kita lihat, dua variabel dibandingkan sedikit demi sedikit. Kapanpun nilai bit pada kedua variabel adalah 1, maka hasilnya adalah 1 atau 0.
Bitwise ATAU
Diwakili oleh satu tanda batang vertikal (|). Dua ekspresi bilangan bulat ditulis pada setiap sisi operator (|).
Hasil operasi bitwise OR adalah 1 jika setidaknya satu ekspresi bernilai 1; jika tidak, hasilnya selalu 0.
Misalkan kita mempunyai 2 variabel op1 dan op2 dengan nilai sebagai berikut:
Op1 = 0000 1101 Op2 = 0001 1001
Hasil operasi OR pada variabel op1 dan op2 adalah
Result = 0001 1101
Seperti yang bisa kita lihat, dua variabel dibandingkan sedikit demi sedikit. Kapanpun nilai bit pada salah satu variabel adalah 1, maka hasilnya akan menjadi 1 atau 0.
Bitwise Eksklusif ATAU
Dilambangkan dengan simbol (^). Dua ekspresi bilangan bulat ditulis di setiap sisi operator (^).
Hasil operasi Eksklusif-ATAU bitwise adalah 1 jika hanya satu ekspresi yang bernilai 1; jika tidak, hasilnya selalu 0.
Misalkan kita mempunyai 2 variabel op1 dan op2 dengan nilai sebagai berikut:
Op1 = 0000 1101 Op2 = 0001 1001
Hasil operasi XOR pada variabel op1 dan op2 adalah
Result = 0001 0100
Seperti yang bisa kita lihat, dua variabel dibandingkan sedikit demi sedikit. Jika hanya satu variabel yang bernilai 1 maka hasilnya adalah 0, jika tidak maka hasilnya adalah 0.
Mari kita menulis program sederhana yang menunjukkan operator logika bitwise.
#include <stdio.h> int main() { int a = 20; /* 20 = 010100 */ int b = 21; /* 21 = 010101 */ int c = 0; c = a & b; /* 20 = 010100 */ printf("AND - Value of c is %d\n", c ); c = a | b; /* 21 = 010101 */ printf("OR - Value of c is %d\n", c ); c = a ^ b; /* 1 = 0001 */ printf("Exclusive-OR - Value of c is %d\n", c ); getch(); }
Keluaran:
AND - Value of c is 20 OR - Value of c is 21 Exclusive-OR - Value of c is 1
Operator pergeseran bitwise
Operator pergeseran bitwise digunakan untuk memindahkan/menggeser pola bit ke sisi kiri atau kanan. Kiri dan kanan adalah dua operator pergeseran yang disediakan oleh 'C' yang direpresentasikan sebagai berikut:
Operand << n (Left Shift) Operand >> n (Right Shift)
Di sini,
- operan adalah ekspresi bilangan bulat yang harus kita gunakan untuk melakukan operasi shift.
- 'n' adalah jumlah total posisi bit yang harus kita geser dalam ekspresi bilangan bulat.
Operasi pergeseran kiri akan menggeser jumlah bit 'n' ke sisi kiri. Bit paling kiri dalam ekspresi akan dimunculkan, dan n bit dengan nilai 0 akan diisi di sisi kanan.
Operasi shift kanan akan menggeser jumlah bit 'n' ke sisi kanan. Bit 'n' paling kanan dalam ekspresi akan muncul, dan nilai 0 akan diisi di sisi kiri.
Contoh: x adalah ekspresi bilangan bulat dengan data 1111. Setelah melakukan operasi shift hasilnya adalah:
x << 2 (left shift) = 1111<<2 = 1100 x>>2 (right shift) = 1111>>2 = 0011
ShiftOperator s dapat digabungkan, kemudian dapat digunakan untuk mengekstrak data dari ekspresi integer. Mari kita tulis sebuah program untuk menunjukkan penggunaan operator bitwise shift.
#include <stdio.h> int main() { int a = 20; /* 20 = 010100 */ int c = 0; c = a << 2; /* 80 = 101000 */ printf("Left shift - Value of c is %d\n", c ); c = a >> 2; /*05 = 000101 */ printf("Right shift - Value of c is %d\n", c ); return 0; }
Keluaran:
Left shift - Value of c is 80 Right shift - Value of c is 5
Setelah melakukan operasi shift kiri nilainya akan menjadi 80 yang setara binernya adalah 101000.
Setelah melakukan operasi shift ke kanan, nilainya akan menjadi 5 yang ekuivalen binernya adalah 000101.
Operator pelengkap bitwise
Komplemen bitwise juga disebut sebagai operator komplemen satu karena hanya mengambil satu nilai atau satu operan. Operator ini adalah operator unary.
Saat kita melakukan komplemen pada bit mana pun, semua angka 1 menjadi 0 dan sebaliknya.
Jika kita mempunyai suatu ekspresi integer yang berisi 0000 1111 maka setelah melakukan operasi komplemen bitwise nilainya akan menjadi 1111 0000.
Operator komplemen bitwise dilambangkan dengan simbol tilde (~).
Mari kita tulis program yang menunjukkan penerapan operator komplemen bitwise.
#include <stdio.h> int main() { int a = 10; /* 10 = 1010 */ int c = 0; c = ~(a); printf("Complement - Value of c is %d\n", c ); return 0; }
Keluaran:
Complement - Value of c is -11
Berikut adalah program lainnya, dengan contoh dari semua operator yang telah dibahas sejauh ini:
#include <stdio.h> main() { unsigned int x = 48; /* 48 = 0011 0000 */ unsigned int y = 13; /* 13 = 0000 1101 */ int z = 0; z =x & y; /* 0 = 0000 0000 */ printf("Bitwise AND Operator - x & y = %d\n", z ); z = x | y; /* 61 = 0011 1101 */ printf("Bitwise OR Operator - x | y = %d\n", z ); z= x^y; /* 61 = 0011 1101 */ printf("Bitwise XOR Operator- x^y= %d\n", z); z = ~x; /*-49 = 11001111 */ printf("Bitwise One's Complement Operator - ~x = %d\n", z); z = x << 2; /* 192 = 1100 0000 */ printf("Bitwise Left Shift Operator x << 2= %d\n", z ); z= x >> 2; /* 12 = 0000 1100 */ printf ("Bitwise Right Shift Operator x >> 2= %d\n", z );}
Setelah kita mengkompilasi dan menjalankan program tersebut, maka akan menghasilkan hasil sebagai berikut:
Bitwise AND Operator - x & y = 0 Bitwise OR Operator - x | y = 61 Bitwise XOR Operator- x^y= 61 Bitwise One's Complement Operator - ~x = -49 Bitwise Left Shift Operator x << 2= 192 Bitwise Right Shift Operator x >> 2= 12
Kesimpulan
- Operator bitwise adalah set operator khusus yang disediakan oleh 'C.'
- Mereka digunakan dalam pemrograman tingkat bit.
- Operator ini digunakan untuk memanipulasi bit ekspresi integer.
- Logika, pergeseran dan pelengkap adalah tiga jenis operator bitwise.
- Operator komplemen bitwise digunakan untuk membalikkan bit suatu ekspresi.