C++

Opérateurs C++ au niveau du bit

Opérateurs C++ au niveau du bit
Dans cet article, nous allons discuter des opérateurs au niveau du bit dans le langage de programmation C++. Nous verrons plusieurs exemples de travail pour comprendre en détail les opérations au niveau du bit. En C++, les opérateurs au niveau du bit fonctionnent au niveau du bit individuel.

Bref aperçu des opérateurs au niveau du bit

Un opérateur est un symbole qui demande au compilateur d'effectuer certaines opérations mathématiques ou logiques. Il existe plusieurs types d'opérateurs en C++, tels que :

  1. Opérateurs arithmétiques
  2. Opérateurs logiques
  3. Opérateurs relationnels
  4. Opérateurs d'affectation
  5. Opérateurs au niveau du bit
  6. Opérateurs divers

Tous les opérateurs Bitwise fonctionnent au niveau du bit individuel. L'opérateur au niveau du bit ne peut être appliqué qu'aux types de données entier et caractère. Par exemple, si vous avez une variable de type entier avec une taille de 32 bits et que vous appliquez une opération NOT au niveau du bit, l'opérateur NOT au niveau du bit sera appliqué pour tous les 32 bits. Donc, finalement, tous les 32 bits de la variable seront inversés.

Six opérateurs au niveau du bit différents sont disponibles en C++ :

  1. OU au niveau du bit [représenté par « | »]
  2. ET au niveau du bit [représenté par "&"]
  3. PAS au niveau du bit [représenté par « ~ »]
  4. XOR au niveau du bit [représenté par « ^ »]
  5. Décalage gauche au niveau du bit [représenté par "<<”]
  6. Décalage vers la droite au niveau du bit [représenté par « >> »]

Table de vérité OU au niveau du bit

L'opérateur OU au niveau du bit produit 1 lorsqu'au moins un opérande est défini sur 1. Voici la table de vérité pour l'opérateur OR au niveau du bit :

Bit-1 Bit-2 Bit-1 | Bit-2
0 0 0
0 1 1
1 0 1
1 1 1

Table de vérité ET au niveau du bit

L'opérateur ET au niveau du bit produit 1 lorsque les deux opérandes sont définis sur 1. Voici la table de vérité pour l'opérateur ET au niveau du bit :

Bit-1 Bit-2 Bit-1 & Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Table de vérité PAS au niveau du bit

L'opérateur NOT au niveau du bit inverse l'opérande. Voici la table de vérité pour l'opérateur Bitwise NOT :

Bit-1 ~Bit-1
0 1
1 0

Table de vérité XOR au niveau du bit

L'opérateur XOR au niveau du bit produit 1 si, et seulement si, l'un des opérandes est défini sur 1. Voici la table de vérité pour l'opérateur ET au niveau du bit :

Bit-1 Bit-2 Bit-1 ^ Bit-2
0 0 0
0 1 1
1 0 1
1 1 0

Opérateur de décalage à gauche au niveau du bit

L'opérateur Bitwise Left Shift décale tous les bits à gauche du nombre spécifié de bits spécifiés. Si vous décalez à gauche tous les bits des données de 1, les données d'origine seront multipliées par 2. De même, si vous décalez à gauche tous les bits des données par 2, les données d'origine seront multipliées par 4.

Opérateur de décalage vers la droite au niveau du bit

L'opérateur Bitwise Right Shift décale tous les bits vers la droite du nombre spécifié de bits spécifiés. Si vous décalez à droite tous les bits des données de 1, les données d'origine seront divisées (division entière) par 2. De même, si vous décalez à droite tous les bits des données de 2, les données d'origine seront divisées (division entière) par 4.

Exemples

Maintenant que nous avons compris le concept de base des opérations au niveau du bit, regardons quelques exemples, qui vous aideront à comprendre les opérations au niveau du bit en C++ :

Les exemples 7 et 8 servent à démontrer l'utilisation réelle des opérateurs au niveau du bit dans le langage de programmation C++.

Exemple-1 : Opérateur OR au niveau du bit

Dans cet exemple de programme, nous allons démontrer l'opérateur OR au niveau du bit.

#inclure
#inclure
#inclure
en utilisant l'espace de noms std ;
// fonction display()
void display(string print_msg, int number)

jeu de bits<16> myBitSet(nombre);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int first_num = 7, second_num = 9, résultat = 0 ;
// Opération OR au niveau du bit
résultat = first_num | second_num;
// affiche les nombres saisis
cout << endl;
display("Le premier nombre est        =  ", first_num);
display("Le deuxième numéro est       =  ", second_num);
// affiche la valeur de sortie
display("first_num | second_num =  ", résultat);
cout << endl;
renvoie 0 ;

Exemple 2 : opérateur ET au niveau du bit

Dans cet exemple de programme, nous allons illustrer l'opérateur ET au niveau du bit.

#inclure
#inclure
#inclure
en utilisant l'espace de noms std ;
// fonction display()
void display(string print_msg, int number)

jeu de bits<16> myBitSet(nombre);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int first_num = 7, second_num = 9, résultat = 0 ;
// Opération ET au niveau du bit
résultat = first_num & second_num;
// affiche les nombres saisis
cout << endl;
display("Le premier nombre est        =  ", first_num);
splay("Le deuxième numéro est       =  ", second_num);
// affiche la valeur de sortie
display("first_num & second_num =  ", résultat);
cout << endl;
renvoie 0 ;

Exemple-3 : opérateur NOT au niveau du bit

Dans cet exemple de programme, nous comprendrons comment fonctionne l'opérateur Bitwise NOT en C++.

#inclure
#inclure
#inclure
en utilisant l'espace de noms std ;
// fonction display()
void display(string print_msg, int number)

jeu de bits<16> myBitSet(nombre);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0 ;
// Opération NOT au niveau du bit
result_1 = ~premier_num;
result_2 = ~second_num;
// affiche les nombres d'entrée et la valeur de sortie
cout << endl;
display("Le premier nombre est    =  ", first_num);
display("~first_num         =  ", result_1);
cout << endl;
// affiche les nombres d'entrée et la valeur de sortie
display("Le deuxième numéro est   =  ", second_num);
display("~second_num        =  ", result_2) ;
cout << endl;
renvoie 0 ;

Exemple 4 : opérateur XOR au niveau du bit

Ce programme a pour but d'expliquer comment fonctionne l'opérateur Bitwise XOR en C++.

#inclure
#inclure
#inclure
en utilisant l'espace de noms std ;
// fonction display()
void display(string print_msg, int number)

jeu de bits<16> myBitSet(nombre);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int first_num = 7, second_num = 9, résultat = 0 ;
// Opération XOR au niveau du bit
résultat = first_num ^ second_num;
// affiche les nombres saisis
cout << endl;
display("Le premier nombre est        =  ", first_num);
display("Le deuxième numéro est       =  ", second_num);
// affiche la valeur de sortie
display("first_num ^ second_num =  ", résultat);
cout << endl;
renvoie 0 ;

Exemple-5 : Opérateur de décalage à gauche au niveau du bit

Maintenant, nous allons voir l'exemple de l'opérateur Bitwise Left Shift. Dans ce programme, nous avons déclaré deux nombres, first_num et second_num de type entier. Ici, le "first_num" est décalé d'un bit à gauche et le "second_num" est décalé de deux bits à gauche.

#inclure
#inclure
#inclure
en utilisant l'espace de noms std ;
// fonction display()
void display(string print_msg, int number)

jeu de bits<16> myBitSet(nombre);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0 ;
// Opération de décalage à gauche au niveau du bit
result_1 = first_num << 1;
result_2 = second_num << 2;
// affiche les nombres d'entrée et la valeur de sortie
cout << endl;
display("Le premier nombre est    =  ", first_num);
display("premier_num << 1     =  ", result_1);
cout << endl;
// affiche les nombres d'entrée et la valeur de sortie
display("Le deuxième numéro est   =  ", second_num);
display("second_num << 2    =  ", result_2);
cout << endl;
renvoie 0 ;

Exemple 6 : opérateur de décalage vers la droite au niveau du bit

Maintenant, nous allons voir un autre exemple pour comprendre l'opérateur Bitwise Right Shift. Nous avons déclaré deux nombres, first_num et second_num de type entier. Ici, le "first_num" est décalé d'un bit vers la droite et le "second_num" est décalé de deux bits vers la droite.

#inclure
#inclure
#inclure
en utilisant l'espace de noms std ;
// fonction display()
void display(string print_msg, int number)

jeu de bits<16> myBitSet(nombre);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0 ;
// Opération de décalage vers la droite au niveau du bit
result_1 = first_num >> 1 ;
result_2 = second_num >> 2;
// affiche les nombres d'entrée et la valeur de sortie
cout << endl;
display("Le premier nombre est    =  ", first_num);
display("first_num >> 1     =  ", result_1);
cout << endl;
// affiche les nombres d'entrée et la valeur de sortie
display("Le deuxième numéro est   =  ", second_num);
display("second_num >> 2    =  ", result_2) ;
cout << endl;
renvoie 0 ;

Exemple-7 : Définir le bit

Cet exemple vise à montrer comment définir un bit particulier à l'aide d'opérateurs au niveau du bit.

#inclure
#inclure
#inclure
en utilisant l'espace de noms std ;
// fonction display()
void display(string print_msg, int number)

jeu de bits<16> myBitSet(nombre);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int first_num = 7, second_num = 9;
// affiche le numéro d'entrée - first_num
cout << endl;
display("Le premier nombre est           =  ", first_num);
// Définir le 5ème bit
first_num |= (1UL << 5);
// Imprimer la sortie
display("Définir le 5ème bit de first_num  =  ", first_num);
cout << endl;
// affiche le numéro d'entrée - second_num
cout << endl;
display("Le deuxième numéro est           =  ", second_num); // Définir le 6ème bit
second_num |= (1UL << 6);
// Imprimer la sortie
display("Définir le 6ème bit de second_num  =  ", second_num);
cout << endl;
renvoie 0 ;

Exemple-8 : Effacer le bit

Cet exemple a pour but de montrer comment effacer un bit particulier à l'aide d'opérateurs au niveau du bit.

#inclure
#inclure
#inclure
en utilisant l'espace de noms std ;
// fonction display()
void display(string print_msg, int number)

jeu de bits<16> myBitSet(nombre);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main()

int first_num = 7, second_num = 9;
// affiche le numéro d'entrée - first_num
cout << endl;
display("Le premier nombre est           =  ", first_num);
// Efface le 2ème bit
first_num &= ~(1UL << 2);
// Imprimer la sortie
display("Définir le 2ème bit de first_num  =  ", first_num);
cout << endl;
// affiche le numéro d'entrée - second_num
cout << endl;
display("Le deuxième numéro est           =  ", second_num);
// Efface le 3ème bit
second_num &= ~(1UL << 3);
// Imprimer la sortie
display("Définir le 3ème bit de second_num  =  ", second_num);
cout << endl;
renvoie 0 ;

Conclusion

L'opérateur au niveau du bit est principalement utilisé pour manipuler les bits individuels pour le type de données entier et caractère. L'opérateur au niveau du bit est largement utilisé dans le développement de logiciels embarqués. Ainsi, si vous développez un pilote de périphérique ou un système très proche du niveau matériel, vous souhaiterez peut-être utiliser ces opérateurs au niveau du bit.

Installez le dernier émulateur Dolphin pour Gamecube et Wii sur Linux
L'émulateur Dolphin vous permet de jouer aux jeux Gamecube et Wii de votre choix sur des ordinateurs personnels Linux (PC). Étant un émulateur de jeu...
Comment utiliser le moteur de triche GameConqueror sous Linux
L'article couvre un guide sur l'utilisation du moteur de triche GameConqueror sous Linux. De nombreux utilisateurs qui jouent à des jeux sur Windows u...
Meilleurs émulateurs de console de jeu pour Linux
Cet article répertorie les logiciels d'émulation de console de jeu populaires disponibles pour Linux. L'émulation est une couche de compatibilité logi...