Bitwise Operatorseurs en C : AND, OR, XOR, Shift & Complément

Que sont les bitswise Operatorseurs ?

Bitwise Operajeudi sont utilisés pour manipuler les données au niveau du bit, également appelé programmation au niveau du bit. Peuwise operatests sur un ou plusieurs modèles de bits ou chiffres binaires au niveau de leurs bits individuels. Ils sont utilisés dans les calculs numériques pour accélérer le processus de calcul.

Following est la liste des bitswise operaTors fournis par le langage de programmation « C » :

Operator Sens
& Bitwise ET operator
| Bitwise OR operator
^ Bitwise OU exclusif operator
~ Le complément du binaire Operator est un unaire operator
<< Gauche shift operator
>> Droite shift operator

Bitwise operaLes tors ne peuvent pas être directement appliqués aux types de données primitifs tels que float, double, etc. Rappelez-vous toujours une chose qui a un peuwise operaLes tors sont principalement utilisés avec le type de données entier en raison de sa compatibilité.

Le BITwise logique operaLes opérateurs travaillent sur les données petit à petit, en commençant par le bit le moins significatif, c'est-à-dire le bit LSB qui est le bit le plus à droite, en progressant vers le MSB (Most Significant Bit) qui est le bit le plus à gauche.

Le résultat du calcul de bitwise logique operators est indiqué dans le tableau ci-dessous.

x y x et y x | oui x ^ y
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

Bitwise ET

C'est l'un des bits logiques les plus couramment utiliséswise operators. Il est représenté par un seul signe esperluette (&). Deux expressions entières sont écrites de chaque côté du (&) operator.
Le résultat du bitwise ET operation vaut 1 si les deux bits ont la valeur 1 ; autrewise, le résultat est toujours 0.

Considérons que nous avons 2 variables op1 et op2 avec les valeurs suivantes :

Op1 = 0000 1101
Op2 = 0001 1001

Le résultat du ET operation 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.

Bitwise OR

Il est représenté par un seul signe de barre verticale (|). Deux expressions entières sont écrites de chaque côté du (|) operator.

Le résultat du bitwise OR operation est 1 si au moins une des expressions a la valeur 1 ; autrewise, le résultat est toujours 0.

Considérons que nous avons 2 variables op1 et op2 avec les valeurs suivantes :

Op1 = 0000 1101
Op2 = 0001 1001

Le résultat du OU operation 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.

Bitwise OU exclusif

Il est représenté par un symbole (^). Deux expressions entières sont écrites de chaque côté du (^) operator.

Le résultat du bitwise OU exclusif operation vaut 1 si une seule des expressions a la valeur 1 ; autrewise, le résultat est toujours 0.

Considérons que nous avons 2 variables op1 et op2 avec les valeurs suivantes :

Op1 = 0000 1101
Op2 = 0001 1001

Le résultat du XOR operation 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 contient la valeur 1, le résultat est 0, sinon 0 sera le résultat.

Écrivons un programme simple qui démontre peuwise logique operateurs.

#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();
}

Sortie :

AND - Value of c is 20
OR - Value of c is 21
Exclusive-OR - Value of c is 1

Bitwise shift operajeudi

Le BITwise shift operaLes torseurs sont utilisés pour déplacer/shift les modèles de bits vers la gauche ou vers la droite. Gauche et droite font deux shift operators fournis par 'C' qui sont représentés comme suit :

Operand << n (Left Shift)
Operand >> n (Right Shift)

Ici,

  • an operand est une expression entière sur laquelle on doit effectuer la shift operation.
  • 'n' est le nombre total de positions de bits que nous devons shift dans l'expression entière.

La gauche shift operation sera shift le nombre « n » de bits sur le côté gauche. Les bits les plus à gauche de l'expression seront affichés et n bits avec la valeur 0 seront remplis sur le côté droit.

La droite shift operation sera shift le nombre « n » de bits sur le côté droit. Les bits « n » les plus à droite de l’expression seront affichés et la valeur 0 sera remplie sur le côté gauche.

Exemple : x est une expression entière avec les données 1111. Après avoir effectué shift operation le résultat sera :

x << 2 (left shift) = 1111<<2 = 1100
x>>2 (right shift) = 1111>>2 = 0011

Shifts operaLes torseurs 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 de bitwise shift operateurs.

#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;
}

Sortie :

Left shift - Value of c is 80
Right shift - Value of c is 5

Après avoir exécuté la gauche shift operation la valeur deviendra 80 dont l'équivalent binaire est 101000.

Après avoir effectué le droit shift operation, la valeur deviendra 5 dont l'équivalent binaire est 000101.

Bitwise complément operator

Le BITwise le complément est aussi appelé complément operacar il ne prend toujours qu'une seule valeur ou un operasd. C'est un unaire operator.

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 contenant 0000 1111, alors après avoir exécuté le bitwise complément operation, la valeur deviendra 1111 0000.

Bitwise complément operator est désigné par le symbole tilde (~).

Écrivons un programme qui démontre l'implémentation de bitwise complément operator.

#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;
}

Sortie :

Complement - Value of c is -11

Voici un autre programme, avec un exemple de tous les operaorteils discutés jusqu'à présent :

#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 );}

Après avoir compilé et exécuté le programme, il produit le résultat suivant.wing résultat:

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

Résumé

  • Bitwise operales tors sont spéciaux operaensemble de torseurs fourni par « C ».
  • Ils sont utilisés dans la programmation au niveau bit.
  • Ces operaLes tors sont utilisés pour manipuler les bits d’une expression entière.
  • Logique, shift et le complément sont trois types de bitswise operateurs.
  • Bitwise complément operator est utilisé pour inverser les bits d’une expression.