C Opérateurs au niveau du bit: opérations ET, OU, XOR, complément et décalage

Dans ce didacticiel, vous découvrirez les 6 opérateurs binaires de la programmation C avec des exemples.

Dans l'unité arithmétique-logique (qui se trouve dans la CPU), les opérations mathématiques telles que: l'addition, la soustraction, la multiplication et la division sont effectuées au niveau du bit. Pour effectuer des opérations au niveau du bit dans la programmation C, des opérateurs au niveau du bit sont utilisés.

Les opérateurs Signification des opérateurs
& ET au niveau du bit
| OU au niveau du bit
^ XOR au niveau du bit
~ Complément au niveau du bit
<< Shift gauche
>> Shift vers la droite

Opérateur AND au niveau du bit &

La sortie de ET au niveau du bit est 1 si les bits correspondants de deux opérandes sont 1. Si l'un des bits d'un opérande est 0, le résultat du bit correspondant est évalué à 0.

Supposons l'opération ET au niveau du bit de deux entiers 12 et 25.

 12 = 00001100 (en binaire) 25 = 00011001 (en binaire) Bit Fonctionnement de 12 et 25 00001100 & 00011001 ________ 00001000 = 8 (en décimal)

Exemple n ° 1: ET au niveau du bit

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

Production

 Sortie = 8

Opérateur OR au niveau du bit |

La sortie du OU au niveau du bit est 1 si au moins un bit correspondant de deux opérandes est 1. Dans la programmation C, l'opérateur OU au niveau du bit est noté |.

12 = 00001100 (en binaire) 25 = 00011001 (en binaire) au niveau du bit OU Fonctionnement de 12 et 25 00001100 | 00011001 ________ 00011101 = 29 (en décimal)

Exemple # 2: OU au niveau du bit

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

Production

 Sortie = 29

Opérateur XOR au niveau du bit (OU exclusif) ^

Le résultat de l'opérateur XOR au niveau du bit est 1 si les bits correspondants de deux opérandes sont opposés. Il est noté ^.

 12 = 00001100 (en binaire) 25 = 00011001 (en binaire) XOR bit à bit Fonctionnement de 12 et 25 00001100 00011001 ________ 00010101 = 21 (en décimal)

Exemple # 3: XOR au niveau du bit

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

Production

 Sortie = 21

Opérateur de complément au niveau du bit ~

L'opérateur de compliment au niveau du bit est un opérateur unaire (ne fonctionne que sur un seul opérande). Il change 1 en 0 et 0 en 1. Il est noté ~.

 35 = 00100011 (en binaire) Complément binaire Fonctionnement de 35 ~ 00100011 ________ 11011100 = 220 (en décimal) 

Twist dans l'opérateur de complément au niveau du bit dans la programmation C

Le complément bit à 35 (~ 35) est -36 au lieu de 220, mais pourquoi?

Pour tout entier n, le complément au niveau du bit de n sera -(n+1). Pour comprendre cela, vous devez avoir la connaissance du complément de 2.

Complément 2

Le complément à deux est une opération sur les nombres binaires. Le complément à 2 d'un nombre est égal au complément de ce nombre plus 1. Par exemple:

 Complément de 2 décimal binaire 0 00000000 - (11111111 + 1) = -00000000 = -0 (décimal) 1 00000001 - (11111110 + 1) = -11111111 = -256 (décimal) 12 00001100 - (11110011 + 1) = -11110100 = -244 (décimal) 220 11011100 - (00100011 + 1) = -00100100 = -36 (décimal) Remarque: le débordement est ignoré lors du calcul du complément à 2. 

Le complément bit à bit de 35 est 220 (en décimal). Le complément 2 de 220 est -36. Par conséquent, la sortie est -36 au lieu de 220.

Le complément bit à bit de tout nombre N est - (N + 1). Voici comment:

 complément au niveau du bit de N = ~ N (représenté sous la forme du complément à 2) 2 'complément de ~ N = - (~ (~ N) +1) = - (N + 1) 

Exemple # 4: Complément au niveau du bit

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

Production

 Sortie = -36 Sortie = 11

Opérateurs de décalage en programmation 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 

Articles intéressants...