Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Opérateurs au niveau du bit en C :AND, OR, XOR, Shift &Complement

Que sont les opérateurs au niveau du bit ?

Opérateurs au niveau du bit sont utilisés pour manipuler des données au niveau du bit, également appelé programmation au niveau du bit. Bitwise fonctionne 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.

Voici la liste des opérateurs au niveau du bit fournis par le langage de programmation « C » :

Opérateur Signification & 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 de complément de Binary One est un opérateur unaire< Opérateur de décalage vers la gauche>> Opérateur de décalage à droite


Les opérateurs au niveau du bit ne peuvent pas être directement appliqués aux types de données primitifs tels que float, double, etc. Rappelez-vous toujours que les opérateurs au niveau du bit sont principalement utilisés avec le type de données entier en raison de sa compatibilité.

Les opérateurs logiques au niveau du bit travaillent sur les données bit par bit, en partant du bit le moins significatif, c'est-à-dire le bit LSB qui est le bit le plus à droite, en allant vers le MSB (Most Significant Bit) qui est le bit le plus à gauche.

Le résultat du calcul des opérateurs logiques au niveau du bit est présenté dans le tableau ci-dessous.

x o x et y x | v x ^ y 0 00000 10111 00111 1110

Dans ce tutoriel, vous apprendrez-

ET au niveau du bit

C'est 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 1101
Op2 = 0001 1001

Le résultat de l'opération ET 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, le résultat sera 1 ou bien 0.

OU au niveau du bit

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

Le résultat de l'opération OU au niveau du bit est 1 si au moins l'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 1101
Op2 = 0001 1001

Le résultat de l'opération OU 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 1101
Op2 = 0001 1001

Le résultat de l'opération XOR 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 illustre les opérateurs logiques au niveau du bit.

#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

Opérateurs de décalage au niveau du bit

Les opérateurs de décalage au niveau du bit 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,

L'opération de décalage vers la gauche décalera le nombre "n" de bits vers la gauche. Les bits les plus à gauche de l'expression seront supprimés et n bits avec la valeur 0 seront remplis sur le côté droit.

L'opération de décalage vers la droite décalera le nombre "n" de bits vers la droite. Les « n bits » les plus à droite de l'expression seront supprimé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é l'opération de décalage, le résultat sera :

x << 2 (left shift) = 1111<<2 = 1100
x>>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 des opérateurs de décalage au niveau du bit.

#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 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é opérateur de complément à un puisqu'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 contenant 0000 1111, après avoir effectué l'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.

#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 opératoes discutés jusqu'ici :

#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 :

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é


Langue C

  1. Classe et objet C#
  2. Classe abstraite et méthode C#
  3. Classe partielle C# et méthode partielle
  4. Classe et méthode scellées C#
  5. Opérateurs C++
  6. Mots-clés et identifiants C
  7. Opérateurs de programmation C
  8. IoT et blockchain – Un changement de paradigme
  9. Opérateurs en C++ avec exemple :qu'est-ce que c'est, les types et les programmes