C Pengendali Bitwise: DAN, ATAU, XOR, Operasi Pelengkap dan Pergeseran

Dalam tutorial ini, anda akan belajar mengenai semua 6 operator bitwise dalam pengaturcaraan C dengan contoh.

Dalam unit aritmetik-logik (yang terdapat dalam CPU), operasi matematik seperti: penambahan, pengurangan, pendaraban dan pembahagian dilakukan dalam tahap bit. Untuk menjalankan operasi tahap bit dalam pengaturcaraan C, operator bitwise digunakan.

Pengendali Makna operator
& Sedikit demi sedikit DAN
| Sedikit demi sedikit ATAU
^ Bitwise XOR
~ Pelengkap bitwise
<< Pusing ke kiri
>> Belok ke kanan

Pengendali bitwise DAN &

Keluaran bitwise AND adalah 1 jika bit yang sesuai dari dua operan adalah 1. Sekiranya salah satu bit operan adalah 0, hasil bit yang sepadan dinilai menjadi 0.

Mari kita anggap operasi bitwise DAN dua integer 12 dan 25.

 12 = 00001100 (Dalam Binari) 25 = 00011001 (Dalam Binari) Operasi Bit 12 dan 25 00001100 & 00011001 ________ 00001000 = 8 (Dalam perpuluhan)

Contoh # 1: Bitwise DAN

 #include int main() ( int a = 12, b = 25; printf("Output = %d", a&b); return 0; ) 

Pengeluaran

 Keluaran = 8

Pengendali bitwise ATAU |

Keluaran bitwise OR adalah 1 jika sekurang-kurangnya satu bit dua operan sepadan adalah 1. Dalam Pengaturcaraan C, operator bitwise OR dilambangkan dengan |.

12 = 00001100 (Dalam Binari) 25 = 00011001 (Dalam Binari) Bitwise ATAU Operasi 12 dan 25 00001100 | 00011001 ________ 00011101 = 29 (Dalam perpuluhan)

Contoh # 2: Bitwise ATAU

 #include int main() ( int a = 12, b = 25; printf("Output = %d", a|b); return 0; ) 

Pengeluaran

 Keluaran = 29

Pengendali Bitwise XOR (eksklusif ATAU) ^

Hasil pengendali XOR bitwise adalah 1 jika bit dua operan yang bersesuaian bertentangan. Ia dilambangkan dengan ^.

 12 = 00001100 (Dalam Binari) 25 = 00011001 (Dalam Binari) Operasi Bitwise XOR 12 dan 25 00001100 00011001 ________ 00010101 = 21 (Dalam perpuluhan)

Contoh # 3: Bitwise XOR

 #include int main() ( int a = 12, b = 25; printf("Output = %d", a^b); return 0; )

Pengeluaran

 Keluaran = 21

Pengendali pelengkap bitwise ~

Pengendali pujian Bitwise adalah pengendali yang tidak berfungsi (hanya berfungsi pada satu operasi). Ia berubah 1 hingga 0 dan 0 hingga 1. Ia dilambangkan dengan ~.

 35 = 00100011 (Dalam Binari) Pelengkap Bitwise Operasi 35 ~ 00100011 ________ 11011100 = 220 (Dalam perpuluhan) 

Putar dalam operator pelengkap bitwise dalam Pengaturcaraan C

Pelengkap bitwise 35 (~ 35) adalah -36 dan bukannya 220, tetapi mengapa?

Untuk sebarang bilangan bulat n, pelengkap bit demi bit akan -(n+1). Untuk memahami perkara ini, anda harus mempunyai pengetahuan mengenai pelengkap 2.

Pelengkap 2's

Pelengkap dua adalah operasi pada nombor binari. Pelengkap nombor 2 sama dengan pelengkap nombor ditambah 1. Contohnya:

 Pelengkap Perpuluhan Perduaan 2 0 00000000 - (11111111 + 1) = -00000000 = -0 (perpuluhan) 1 00000001 - (11111110 + 1) = -11111111 = -256 (perpuluhan) 12 00001100 - (11110011 + 1) = -11110100 = -244 (perpuluhan) 220 11011100 - (00100011 + 1) = -00100100 = -36 (perpuluhan) Catatan: Limpahan diabaikan semasa mengira pelengkap 2. 

Pelengkap bitwise 35 ialah 220 (dalam perpuluhan). Pelengkap 2 dari 220 ialah -36. Oleh itu, output adalah -36 dan bukannya 220.

Pelengkap bitwise bagi sebarang nombor N adalah - (N + 1). Ini caranya:

 pelengkap bitwise N = ~ N (ditunjukkan dalam bentuk pelengkap 2) 2'lengkap ~ N = - (~ (~ N) +1) = - (N + 1) 

Contoh # 4: Pelengkap bitwise

 #include int main() ( printf("Output = %d",~35); printf("Output = %d",~-12); return 0; ) 

Pengeluaran

 Keluaran = -36 Keluaran = 11

Shift Operator dalam pengaturcaraan C

There are two shift operators in C programming:

  • Right shift operator
  • Left shift operator.

Right Shift Operator

Right shift operator shifts all bits towards right by certain number of specified bits. It is denoted by>>.

 212 = 11010100 (In binary) 212>>2 = 00110101 (In binary) (Right shift by two bits) 212>>7 = 00000001 (In binary) 212>>8 = 00000000 212>>0 = 11010100 (No Shift) 

Left Shift Operator

Left shift operator shifts all bits towards left by a certain number of specified bits. The bit positions that have been vacated by the left shift operator are filled with 0. The symbol of the left shift operator is <<.

 212 = 11010100 (In binary) 212<<1 = 110101000 (In binary) (Left shift by one bit) 212<<0 = 11010100 (Shift by 0) 212<<4 = 110101000000 (In binary) =3392(In decimal)

Example #5: Shift Operators

 #include int main() ( int num=212, i; for (i=0; i>i); printf(""); for (i=0; i<=2; ++i) printf("Left shift by %d: %d", i, num< 
 Right Shift by 0: 212 Right Shift by 1: 106 Right Shift by 2: 53 Left Shift by 0: 212 Left Shift by 1: 424 Left Shift by 2: 848 

Artikel menarik...