C Operator Bitwise: AND, OR, XOR, Shift & Pelengkap (dengan Contoh)

Daftar Isi:

Anonim

Apa itu Operator Bitwise?

BITWISE OPERATORS digunakan untuk memanipulasi data pada level bit, juga disebut pemrograman level bit. Bitwise beroperasi pada satu atau lebih pola bit atau angka biner pada level bit individualnya. Mereka digunakan dalam perhitungan numerik untuk membuat proses perhitungan lebih cepat.

Berikut adalah daftar operator bitwise yang disediakan oleh bahasa pemrograman 'C':

Operator Berarti
& Bitwise AND operator
| Bitwise OR operator
^ Operator OR eksklusif bitwise
~ Operator Pelengkap Binary One adalah operator unary
<< Operator shift kiri
>> Operator shift kanan

Operator bitwise tidak dapat langsung diterapkan ke tipe data primitif seperti float, double, dll. Ingatlah selalu satu hal bahwa operator bitwise banyak digunakan dengan tipe data integer karena kompatibilitasnya.

Operator logika bitwise bekerja pada data sedikit demi sedikit, dimulai dari bit yang paling tidak signifikan, yaitu bit LSB yang merupakan bit paling kanan, bekerja menuju MSB (Bit Paling Signifikan) yang merupakan bit paling kiri.

Hasil perhitungan operator logika bitwise ditunjukkan pada tabel yang diberikan di bawah ini.

x y x & y x | y x y
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

Dalam tutorial ini, Anda akan belajar-

  • Apa itu Operator Bitwise?
  • Bitwise DAN
  • Bitwise ATAU
  • Eksklusif Bitwise ATAU
  • Operator pergeseran bitwise
  • Operator pelengkap bitwise

Bitwise DAN

Ini adalah salah satu operator bitwise logis yang paling umum digunakan. Ini diwakili oleh satu tanda ampersand (&). Dua ekspresi integer ditulis di setiap sisi operator (&).

Hasil dari operasi bitwise AND adalah 1 jika kedua bit memiliki nilai 1; jika tidak, hasilnya selalu 0.

Mari kita anggap bahwa kita memiliki 2 variabel op1 dan op2 dengan nilai sebagai berikut:

Op1 = 0000 1101Op2 = 0001 1001

Hasil operasi AND pada variabel op1 dan op2 adalah

Result = 0000 1001

Seperti yang bisa kita lihat, dua variabel dibandingkan sedikit demi sedikit. Setiap kali nilai bit pada kedua variabel adalah 1, maka hasilnya adalah 1 atau 0.

Bitwise ATAU

Ini diwakili oleh satu tanda batang vertikal (|). Dua ekspresi integer 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 anggap bahwa kita memiliki 2 variabel op1 dan op2 dengan nilai sebagai berikut:

Op1 = 0000 1101Op2 = 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. Setiap kali nilai bit di salah satu variabel adalah 1, maka hasilnya adalah 1 atau 0.

Eksklusif Bitwise ATAU

Itu diwakili oleh simbol (^). Dua ekspresi integer ditulis di setiap sisi operator (^).

Hasil operasi bitwise Exclusive-OR adalah 1 jika hanya satu dari ekspresi yang memiliki nilai 1; jika tidak, hasilnya selalu 0.

Mari kita anggap bahwa kita memiliki 2 variabel op1 dan op2 dengan nilai sebagai berikut:

Op1 = 0000 1101Op2 = 0001 1001

Hasil operasi OR 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 memiliki nilai 1 maka hasilnya adalah 0 dan 0 akan menjadi hasilnya.

Mari kita tulis program sederhana yang mendemonstrasikan operator logika bitwise.

#include 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 20OR - Value of c is 21Exclusive-OR - Value of c is 1

Operator pergeseran 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 direpresentasikan sebagai berikut:

Operand << n (Left Shift)Operand >> n (Right Shift)

Sini,

  • sebuah operand adalah ekspresi integer dimana kita harus melakukan operasi shift.
  • 'n' adalah jumlah total posisi bit yang harus kita geser dalam ekspresi integer.

Operasi shift kiri akan menggeser bilangan 'n' dari bit 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 bilangan 'n' dari bit ke sisi kanan. Bit 'n' paling kanan dalam ekspresi akan dimunculkan, dan nilai 0 akan diisi di sisi kiri.

Contoh: x merupakan ekspresi integer dengan data 1111. Setelah melakukan operasi shift hasilnya adalah:

x << 2 (left shift) = 1111<<2 = 1100x>>2 (right shift) = 1111>>2 = 0011

Operator shift dapat digabungkan kemudian dapat digunakan untuk mengekstrak data dari ekspresi integer. Mari kita tulis program untuk mendemonstrasikan penggunaan operator bitwise shift.

#include 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 80Right shift - Value of c is 5

Setelah melakukan operasi shift kiri, nilainya akan menjadi 80 yang ekuivalen binernya adalah 101000.

Setelah melakukan operasi shift kanan, nilainya akan menjadi 5 yang ekuivalen binernya adalah 000101.

Operator pelengkap bitwise

Pelengkap bitwise juga disebut sebagai operator pelengkap karena selalu membutuhkan hanya satu nilai atau operan. Ini adalah operator unary.

Ketika kita melakukan komplemen pada sembarang bit, semua 1 menjadi 0 dan sebaliknya.

Jika kita memiliki ekspresi integer yang berisi 0000 1111 maka setelah melakukan operasi pelengkap bitwise nilainya akan menjadi 1111 0000.

Operator pelengkap bitwise dilambangkan dengan simbol tilde (~).

Mari kita tulis program yang mendemonstrasikan implementasi operator pelengkap bitwise.

#include 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 operato yang telah didiskusikan sejauh ini:

#include 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; /*-61 = 1100 0011 */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 melakukan compile dan menjalankan program tersebut, menghasilkan hasil sebagai berikut:

Bitwise AND Operator - x & y = 0Bitwise OR Operator - x | y = 61Bitwise XOR Operator- x^y= 61Bitwise One's Complement Operator - ~x = -49Bitwise Left Shift Operator x << 2= 192Bitwise 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 membalik bit ekspresi.