Apa itu Pengendali Bitwise?
OPERATOR BITWISE digunakan untuk memanipulasi data pada tahap bit, juga disebut pengaturcaraan tahap bit. Bitwise beroperasi pada satu atau lebih corak bit atau angka binari pada tahap bit masing-masing. Mereka digunakan dalam pengiraan berangka untuk membuat proses pengiraan lebih cepat.
Berikut adalah senarai operator bitwise yang disediakan oleh bahasa pengaturcaraan 'C':
Pengendali | Makna |
& | Pengendali bitwise DAN |
| | Pengendali bitwise ATAU |
^ | Pengendali ATAU bitwise eksklusif |
~ | Pengendali Pelengkap Binary One adalah pengendali yang tidak tetap |
<< | Pengendali shift kiri |
>> | Pengendali shift kanan |
Pengendali bitwise tidak boleh digunakan secara langsung pada jenis data primitif seperti float, double, dan lain-lain. Sentiasa ingat satu perkara bahawa operator bitwise kebanyakannya digunakan dengan jenis data integer kerana keserasiannya.
Pengendali logik bitwise bekerja pada data sedikit demi sedikit, bermula dari bit yang paling tidak signifikan, iaitu bit LSB yang merupakan bit paling kanan, bekerja menuju MSB (Bit Paling Penting) yang merupakan bit paling kiri.
Hasil pengiraan operator logik bitwise ditunjukkan dalam jadual yang diberikan di bawah.
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 Pengendali Bitwise?
- Sedikit demi sedikit DAN
- Sedikit demi sedikit ATAU
- Bitwise Exclusive ATAU
- Pengendali peralihan bitwise
- Pengendali pelengkap bitwise
Sedikit demi sedikit DAN
Ini adalah salah satu pengendali bitwise logik yang paling biasa digunakan. Ia diwakili oleh tanda ampersand tunggal (&). Dua ungkapan integer ditulis di setiap sisi operator (&).
Hasil operasi bitwise AND adalah 1 jika kedua-dua bit mempunyai nilai sebagai 1; jika tidak, hasilnya selalu 0.
Mari kita anggap bahawa kita mempunyai 2 pemboleh ubah op1 dan op2 dengan nilai seperti berikut:
Op1 = 0000 1101Op2 = 0001 1001
Hasil operasi AND pada pemboleh ubah op1 dan op2 akan
Result = 0000 1001
Seperti yang kita lihat, dua pemboleh ubah dibandingkan sedikit demi sedikit. Apabila nilai bit dalam kedua-dua pemboleh ubah itu adalah 1, maka hasilnya akan menjadi 1 atau 0.
Sedikit demi sedikit ATAU
Ia diwakili oleh tanda bar menegak tunggal (|). Dua ungkapan integer ditulis di setiap sisi operator (|).
Hasil operasi bitwise ATAU adalah 1 jika sekurang-kurangnya satu ungkapan mempunyai nilai sebagai 1; jika tidak, hasilnya selalu 0.
Mari kita anggap bahawa kita mempunyai 2 pemboleh ubah op1 dan op2 dengan nilai seperti berikut:
Op1 = 0000 1101Op2 = 0001 1001
Hasil operasi OR pada pemboleh ubah op1 dan op2 akan
Result = 0001 1101
Seperti yang kita lihat, dua pemboleh ubah dibandingkan sedikit demi sedikit. Apabila nilai bit dalam salah satu pemboleh ubah adalah 1, maka hasilnya akan menjadi 1 atau 0.
Bitwise Exclusive ATAU
Ia dilambangkan dengan simbol (^). Dua ungkapan integer ditulis di setiap sisi operator (^).
Hasil operasi bitwise Exclusive-OR adalah 1 jika hanya satu ungkapan yang mempunyai nilai sebagai 1; jika tidak, hasilnya selalu 0.
Mari kita anggap bahawa kita mempunyai 2 pemboleh ubah op1 dan op2 dengan nilai seperti berikut:
Op1 = 0000 1101Op2 = 0001 1001
Hasil operasi OR pada pemboleh ubah op1 dan op2 akan
Result = 0001 0100
Seperti yang kita lihat, dua pemboleh ubah dibandingkan sedikit demi sedikit. Apabila hanya satu pemboleh ubah yang memegang nilai 1 maka hasilnya adalah 0 yang lain 0 akan menjadi hasilnya.
Marilah kita menulis program sederhana yang menunjukkan pengendali logik bitwise.
#includeint 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();}
Pengeluaran:
AND - Value of c is 20OR - Value of c is 21Exclusive-OR - Value of c is 1
Pengendali peralihan bitwise
Pengendali pergeseran bit digunakan untuk menggerakkan / menggeser corak bit sama ada ke kiri atau kanan. Kiri dan kanan adalah dua operator shift yang disediakan oleh 'C' yang ditunjukkan seperti berikut:
Operand << n (Left Shift)Operand >> n (Right Shift)
Di sini,
- operan adalah ungkapan integer di mana kita harus melakukan operasi shift.
- 'n' adalah jumlah keseluruhan kedudukan bit yang harus kita ubah dalam ungkapan integer.
Operasi pergeseran kiri akan mengalihkan bilangan bit 'n' ke sebelah kiri. Bit paling kiri dalam ungkapan akan muncul, dan n bit dengan nilai 0 akan diisi di sebelah kanan.
Operasi pergeseran kanan akan mengalihkan bilangan bit 'n' ke sebelah kanan. Bit 'n' paling kanan dalam ungkapan akan muncul, dan nilai 0 akan diisi di sebelah kiri.
Contoh: x adalah ungkapan integer dengan data 1111. Setelah melakukan operasi shift hasilnya akan:
x << 2 (left shift) = 1111<<2 = 1100x>>2 (right shift) = 1111>>2 = 0011
Pengendali shift boleh digabungkan kemudian ia dapat digunakan untuk mengekstrak data dari ungkapan integer. Marilah kita menulis program untuk menunjukkan penggunaan operator shift bitwise.
#includeint 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;}
Pengeluaran:
Left shift - Value of c is 80Right 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 binari adalah 000101.
Pengendali pelengkap bitwise
Pelengkap bitwise juga disebut sebagai operator pelengkap seseorang kerana selalu memerlukan hanya satu nilai atau operan. Ia adalah pengendali yang tidak berubah.
Apabila kita melakukan pelengkap pada bit, semua 1 menjadi 0 dan sebaliknya.
Sekiranya kita mempunyai ungkapan integer yang berisi 0000 1111 maka setelah melakukan operasi pelengkap bitwise nilainya akan menjadi 1111 0000.
Operator pelengkap bitwise dilambangkan dengan simbol tilde (~).
Marilah kita menulis program yang menunjukkan pelaksanaan pengendali pelengkap bitwise.
#includeint main() {int a = 10; /* 10 = 1010 */int c = 0;c = ~(a);printf("Complement - Value of c is %d\n", c );return 0;}
Pengeluaran:
Complement - Value of c is -11
Berikut adalah program lain, dengan contoh semua operasi yang dibincangkan setakat ini:
#includemain() {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 kami menyusun dan menjalankan program, ia menghasilkan hasil 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
- Pengendali bitwise adalah set operator khas yang disediakan oleh 'C.'
- Mereka digunakan dalam pengaturcaraan tahap bit.
- Pengendali ini digunakan untuk memanipulasi bit ungkapan integer.
- Logik, shift dan pelengkap adalah tiga jenis operator bitwise.
- Pengendali pelengkap bitwise digunakan untuk membalikkan bit ungkapan.