Operator Bitwise di C:AND, OR, XOR, Shift &Complement
Apa itu Operator Bitwise?
Operator Bitwise digunakan untuk memanipulasi data pada tingkat bit, juga disebut pemrograman tingkat bit. Bitwise beroperasi pada satu atau lebih pola bit atau angka biner pada tingkat bit masing-masing. Mereka digunakan dalam perhitungan numerik untuk membuat proses perhitungan lebih cepat.
Berikut adalah daftar operator bitwise yang disediakan oleh bahasa pemrograman ‘C’:
Operator Arti & Bitwise DAN operator
| Bitwise ATAU operator
^ Operator ATAU eksklusif bitwise
~ Operator Pelengkap Binary One adalah operator unary
<< Operator shift kiri
>> Operator shift kanan
Operator bitwise tidak dapat langsung diterapkan pada tipe data primitif seperti float, double, dll. Selalu ingat satu hal bahwa operator bitwise banyak digunakan dengan tipe data integer karena kompatibilitasnya.
Operator logika bitwise bekerja pada data sedikit demi sedikit, mulai dari bit yang paling tidak signifikan, yaitu bit LSB yang merupakan bit paling kanan, bekerja menuju 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 | y x ^ y 0 0000
0 1011
1 0011
1 1110
Dalam tutorial ini, Anda akan belajar-
- Apa itu Operator Bitwise?
- Bitwise DAN
- Bitwise ATAU
- Bitwise Eksklusif ATAU
- Operator shift bitwise
- Operator pelengkap bitwise
Bitwise DAN
Ini adalah salah satu operator bitwise logis yang paling umum digunakan. Ini diwakili oleh tanda ampersand tunggal (&). Dua ekspresi integer ditulis di setiap sisi operator (&).
Hasil dari operasi AND bitwise adalah 1 jika kedua bit bernilai 1; jika tidak, hasilnya selalu 0.
Mari kita pertimbangkan bahwa kita memiliki 2 variabel op1 dan op2 dengan nilai sebagai berikut:
Op1 = 0000 1101
Op2 = 0001 1001
Hasil operasi AND pada variabel op1 dan op2 akan menjadi
Result = 0000 1001
Seperti yang kita lihat, dua variabel dibandingkan sedikit demi sedikit. Setiap kali nilai bit pada kedua variabel adalah 1, maka hasilnya akan menjadi 1 atau 0.
Bitwise ATAU
Ini diwakili oleh satu tanda batang vertikal (|). Dua ekspresi bilangan bulat ditulis di setiap sisi operator (|).
Hasil dari operasi bitwise OR adalah 1 jika setidaknya salah satu ekspresi memiliki nilai 1; jika tidak, hasilnya selalu 0.
Mari kita pertimbangkan bahwa kita memiliki 2 variabel op1 dan op2 dengan nilai sebagai berikut:
Op1 = 0000 1101
Op2 = 0001 1001
Hasil dari operasi OR pada variabel op1 dan op2 akan menjadi
Result = 0001 1101
Seperti yang kita lihat, dua variabel dibandingkan sedikit demi sedikit. Setiap kali nilai bit dalam 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 dari operasi Exclusive-OR bitwise adalah 1 jika hanya satu dari ekspresi yang memiliki nilai 1; jika tidak, hasilnya selalu 0.
Mari kita pertimbangkan bahwa kita memiliki 2 variabel op1 dan op2 dengan nilai sebagai berikut:
Op1 = 0000 1101
Op2 = 0001 1001
Hasil operasi XOR pada variabel op1 dan op2 akan menjadi
Result = 0001 0100
Seperti yang kita lihat, dua variabel dibandingkan sedikit demi sedikit. Setiap kali hanya satu variabel yang memegang nilai 1 maka hasilnya adalah 0 jika tidak, 0 akan menjadi hasilnya.
Mari kita menulis program sederhana yang mendemonstrasikan 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 shift bitwise
Operator bitwise shift digunakan untuk memindahkan/menggeser pola bit ke kiri atau kanan. Kiri dan kanan adalah dua operator shift yang disediakan oleh 'C' yang diwakili sebagai berikut:
Operand << n (Left Shift)
Operand >> n (Right Shift)
Di sini,
- operan adalah ekspresi integer di mana kita harus melakukan operasi shift.
- 'n' adalah jumlah total posisi bit yang harus kita geser dalam ekspresi bilangan bulat.
Operasi shift kiri akan menggeser jumlah 'n' bit ke sisi kiri. Bit paling kiri dalam ekspresi akan muncul, dan n bit dengan nilai 0 akan diisi di sisi kanan.
Operasi shift kanan akan menggeser jumlah 'n' bit ke sisi kanan. Bit 'n' paling kanan dalam ekspresi akan muncul, dan nilai 0 akan diisi di sisi kiri.
Contoh:x adalah ekspresi integer dengan data 1111. Setelah dilakukan operasi shift hasilnya adalah:
x << 2 (left shift) = 1111<<2 = 1100
x>>2 (right shift) = 1111>>2 = 0011
Operator shift dapat digabungkan kemudian dapat digunakan untuk mengekstrak data dari ekspresi integer. Mari kita menulis sebuah program untuk mendemonstrasikan penggunaan operator shift bitwise.
#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 kanan, nilainya akan menjadi 5 yang setara binernya adalah 00000101.
Operator pelengkap bitwise
Komplemen bitwise juga disebut sebagai operator komplemen satu karena selalu hanya membutuhkan satu nilai atau operan. Ini adalah operator unary.
Saat kita melakukan komplemen pada setiap bit, semua 1 menjadi 0 dan sebaliknya.
Jika kita memiliki ekspresi integer yang berisi 0000 1111 maka setelah melakukan operasi komplemen bitwise nilainya akan menjadi 1111 0000.
Operator pelengkap bitwise dilambangkan dengan simbol tilde (~).
Mari kita buat program yang mendemonstrasikan implementasi operator pelengkap 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 lain, dengan contoh semua operato 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, maka 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
Ringkasan
- Operator bitwise adalah set operator khusus yang disediakan oleh ‘C.’
- Mereka digunakan dalam pemrograman tingkat bit.
- Operator ini digunakan untuk memanipulasi bit dari ekspresi integer.
- Logis, shift, dan komplemen adalah tiga jenis operator bitwise.
- Operator pelengkap bitwise digunakan untuk membalikkan bit ekspresi.