Que sont les opérateurs au niveau du bit?
Les OPÉRATEURS BITWISE sont utilisés pour manipuler les données au niveau du bit, également appelé programmation au niveau du bit. Bitwise fonctionne sur un ou plusieurs modèles de bits ou des nombres binaires au niveau de leurs bits individuels. Ils sont utilisés dans les calculs numériques pour accélérer le processus de calcul.
Voici la liste des opérateurs binaires fournis par le langage de programmation 'C':
Opérateur | Sens |
& | Opérateur AND au niveau du bit |
| | Opérateur OR au niveau du bit |
^ | Opérateur OU exclusif au niveau du bit |
~ | L'opérateur complémentaire de Binary One est un opérateur unaire |
<< | Opérateur de décalage gauche |
>> | Opérateur de décalage droit |
Les opérateurs bit à bit ne peuvent pas être appliqués directement aux types de données primitifs tels que float, double, etc. Souvenez-vous toujours d'une chose que les opérateurs bit à bit sont principalement utilisés avec le type de données entier en raison de sa compatibilité.
Les opérateurs logiques bit à bit travaillent sur les données bit par bit, en commençant par le bit le moins significatif, c'est-à-dire le bit LSB qui est le bit le plus à droite, en allant vers le MSB (bit le plus significatif) qui est le bit le plus à gauche.
Le résultat du calcul des opérateurs logiques au niveau du bit est indiqué dans le tableau ci-dessous.
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 |
Dans ce didacticiel, vous apprendrez-
- Que sont les opérateurs au niveau du bit?
- ET au niveau du bit
- OU au niveau du bit
- OU exclusif au niveau du bit
- Opérateurs de décalage au niveau du bit
- Opérateur de complément au niveau du bit
ET au niveau du bit
Il s'agit de l'un des opérateurs binaires logiques les plus couramment utilisés. Il est représenté par un seul signe esperluette (&). Deux expressions entières sont écrites de chaque côté de l'opérateur (&).
Le résultat de l'opération ET au niveau du bit est 1 si les deux bits ont la valeur 1; sinon, le résultat est toujours 0.
Considérons que nous avons 2 variables op1 et op2 avec les valeurs suivantes:
Op1 = 0000 1101Op2 = 0001 1001
Le résultat de l'opération AND sur les variables op1 et op2 sera
Result = 0000 1001
Comme on peut le voir, deux variables sont comparées petit à petit. Chaque fois que la valeur d'un bit dans les deux variables est 1, alors le résultat sera 1 ou bien 0.
OU au niveau du bit
Il est représenté par une seule barre verticale (|). Deux expressions entières sont écrites de chaque côté de l'opérateur (|).
Le résultat de l'opération OR au niveau du bit est 1 si au moins une des expressions a la valeur 1; sinon, le résultat est toujours 0.
Considérons que nous avons 2 variables op1 et op2 avec les valeurs suivantes:
Op1 = 0000 1101Op2 = 0001 1001
Le résultat de l'opération OR sur les variables op1 et op2 sera
Result = 0001 1101
Comme on peut le voir, deux variables sont comparées petit à petit. Chaque fois que la valeur d'un bit dans l'une des variables est 1, alors le résultat sera 1 ou bien 0.
OU exclusif au niveau du bit
Il est représenté par un symbole (^). Deux expressions entières sont écrites de chaque côté de l'opérateur (^).
Le résultat de l'opération OU exclusif au niveau du bit est 1 si une seule des expressions a la valeur 1; sinon, le résultat est toujours 0.
Considérons que nous avons 2 variables op1 et op2 avec les valeurs suivantes:
Op1 = 0000 1101Op2 = 0001 1001
Le résultat de l'opération OR sur les variables op1 et op2 sera
Result = 0001 0100
Comme on peut le voir, deux variables sont comparées petit à petit. Chaque fois qu'une seule variable détient la valeur 1, le résultat est 0, sinon 0 sera le résultat.
Écrivons un programme simple qui démontre les opérateurs logiques au niveau du bit.
#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();}
Production:
AND - Value of c is 20OR - Value of c is 21Exclusive-OR - Value of c is 1
Opérateurs de décalage au niveau du bit
Les opérateurs de décalage de bits sont utilisés pour déplacer / décaler les modèles de bits vers la gauche ou vers la droite. Gauche et droite sont deux opérateurs de décalage fournis par 'C' qui sont représentés comme suit:
Operand << n (Left Shift)Operand >> n (Right Shift)
Ici,
- un opérande est une expression entière sur laquelle nous devons effectuer l'opération de décalage.
- 'n' est le nombre total de positions de bits que nous devons décaler dans l'expression entière.
L'opération de décalage vers la gauche décale le nombre «n» de bits vers le côté gauche. Les bits les plus à gauche de l'expression seront sortis et n bits avec la valeur 0 seront remplis sur le côté droit.
L'opération de décalage à droite décale le nombre «n» de bits vers le côté droit. Les 'n' bits les plus à droite de l'expression seront sortis et la valeur 0 sera remplie sur le côté gauche.
Exemple: x est une expression entière avec des données 1111. Après avoir effectué l'opération de décalage, le résultat sera:
x << 2 (left shift) = 1111<<2 = 1100x>>2 (right shift) = 1111>>2 = 0011
Les opérateurs de décalage peuvent être combinés, puis ils peuvent être utilisés pour extraire les données de l'expression entière. Écrivons un programme pour démontrer l'utilisation d'opérateurs de décalage au niveau du bit.
#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;}
Production:
Left shift - Value of c is 80Right shift - Value of c is 5
Après avoir effectué l'opération de décalage vers la gauche, la valeur deviendra 80 dont l'équivalent binaire est 101000.
Après avoir effectué l'opération de décalage vers la droite, la valeur deviendra 5 dont l'équivalent binaire est 000101.
Opérateur de complément au niveau du bit
Le complément au niveau du bit est également appelé comme opérateur de complément car il ne prend toujours qu'une seule valeur ou un opérande. C'est un opérateur unaire.
Lorsque nous effectuons un complément sur n'importe quel bit, tous les 1 deviennent des 0 et vice versa.
Si nous avons une expression entière qui contient 0000 1111, après avoir effectué une opération de complément au niveau du bit, la valeur deviendra 1111 0000.
L'opérateur de complément au niveau du bit est indiqué par le symbole tilde (~).
Écrivons un programme qui démontre l'implémentation de l'opérateur de complément au niveau du bit.
#includeint main() {int a = 10; /* 10 = 1010 */int c = 0;c = ~(a);printf("Complement - Value of c is %d\n", c );return 0;}
Production:
Complement - Value of c is -11
Voici un autre programme, avec un exemple de tous les opératoes discutés jusqu'à présent:
#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 );}
Après avoir compilé et exécuté le programme, il produit le résultat suivant:
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
Résumé
- Les opérateurs au niveau du bit sont des ensembles d'opérateurs spéciaux fournis par 'C.'
- Ils sont utilisés dans la programmation au niveau des bits.
- Ces opérateurs sont utilisés pour manipuler les bits d'une expression entière.
- Logique, décalage et complément sont trois types d'opérateurs au niveau du bit.
- L'opérateur de complément au niveau du bit est utilisé pour inverser les bits d'une expression.