Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

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 00000 10111 00111 1110

Dalam tutorial ini, Anda akan belajar-

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,

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


Bahasa C

  1. C# Kelas dan Objek
  2. C# kelas abstrak dan metode
  3. C# Kelas Parsial dan Metode Parsial
  4. C# kelas dan metode tersegel
  5. Operator C++
  6. C Kata Kunci dan Pengidentifikasi
  7. Operator Pemrograman C
  8. IoT dan blockchain – Perubahan paradigma
  9. Operator di C++ dengan Contoh:Apa itu, Jenis dan Program
  10. Operator Python:Aritmatika, Logika, Perbandingan, Penugasan, Bitwise &Prioritas