Opérateur au niveau du bit en programmation C et C++

Publié: 2022-12-09

Dans la RAM, les données sont organisées comme une séquence d'octets. Chaque octet contient huit bits consécutifs. Les opérateurs binaires C & C++ sont utiles lorsque vous souhaitez effectuer des opérations arithmétiques sur des bits de données. Ils sont assez rapides et sont parfois utilisés pour améliorer l'efficacité d'un programme. Ils travaillent sur des algorithmes au niveau du bit qui effectuent des opérations au niveau du bit ou manipulent les bits de différentes manières.

Les types d'opérateurs binaires en C et C++ :

  1. ET au niveau du bit
  2. OU au niveau du bit
  3. PAS au niveau du bit
  4. Bitwise Exclusive-Or (XOR)
  5. Opérateur de décalage à gauche
  6. Opérateur de décalage à droite

Entrons dans les détails de chacun d'eux:

Table des matières

1. ET au niveau du bit :

L'opérateur ET au niveau du bit en C ou C++ utilise une seule esperluette (&). Il prend deux nombres comme opérandes et exécute ET sur tous leurs bits. Le résultat est 1 uniquement si les deux bits sont 1. Si l'un des bits est 0, le résultat est 0. Essentiellement, cet opérateur binaire en C & C++ prend le ET logique des bits à chaque position des deux nombres donnés dans forme binaire.

Exemple:

Supposons que la représentation binaire de deux nombres a & b est :

un = 01011000

b = 10111001

Donc, a & b = 00011000

Comme le montre l'exemple ci-dessus, le résultat affiche '1' uniquement aux endroits où les nombres a et b ont 1. Pour tous les autres endroits, le résultat affiche '0'.

2. OU au niveau du bit :

En C & C++, Bitwise OR fonctionne de manière assez similaire à bitwise AND. La seule différence est que dans l'opérateur OU au niveau du bit, pour que la position du bit soit '1' dans le résultat, un seul des deux bits doit être '1'. Cet opérateur prend deux nombres comme opérandes et effectue OR sur chaque bit des deux nombres.

Cela fonctionne de la manière suivante :

  • Si les deux bits sont '1', le résultat est '1'.
  • Si les deux bits sont '0', le résultat est '0'.
  • Si l'un des bits est '1', le résultat est '1'.

C'est l'un des opérateurs bit à bit C++ les plus simples et les plus fréquemment utilisés. Son symbole est le tuyau |. De plus, il est identique à l'opérateur logique booléen ||.

Exemple:

Supposons la représentation binaire de deux nombres a| b est :

un = 01101001

b = 10111000

Ainsi, un| b = 11111001

3. PAS au niveau du bit :

Également connu sous le nom d'opérateur Bitwise NOT, il inverse chaque bit du résultat. Son symbole est le tilde (~). Un moyen facile de se souvenir du fonctionnement de cet opérateur est que le tilde est parfois connu sous le nom de twiddle, et le complément au niveau du bit twiddles chaque bit. Cela signifie que si vous avez un 1, le résultat est 0, et vice versa. En d'autres termes, cet opérateur au niveau du bit en C et C++ prend un nombre et inverse tous les bits.

Lors de la détermination de la plus grande valeur possible pour un nombre non signé, celui-ci est l'un des opérateurs bitwise C++ les plus utiles .

Exemple:

nombre entier non signé = ~0 ;

Ici, 0 signifie tous les 0 : 00000000. Ainsi, l'implémentation de l'opérateur Bitwise NOT donne le résultat sous la forme de 1 : 11111111. Comme num est un entier non signé, vous n'avez pas à vous soucier des bits de signe ou du complément à deux. 1s est le plus grand nombre possible dans le résultat.

L'une des caractéristiques cruciales de l'opérateur Bitwise NOT est le complément à 2. Le complément à 2 d'un nombre est égal au complément de ce nombre plus 1.

Exemple:

un = 00000000

Donc, son complément à 2 = -(11111111+1) = -00000000 = -0(décimal)

Remarque : Le complément au niveau du bit de tout nombre N est égal à -(N+1).

Apprenez des cours de développement de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

4. Bitwise Exclusive-OR (XOR):

L'opération OU exclusif accepte deux entrées et produit un 1 si l'une ou l'autre des entrées est un 1. Mais le résultat est 0 si les deux sont 1. Si les deux entrées sont 0 ou si les deux sont 1, le résultat est 0. Le résultat de XOR vaut 1 uniquement si les deux bits sont différents. Le symbole de cet opérateur binaire en C & C++ est caret (^). De plus, cet opérateur au niveau du bit en C & C++ est abrégé en XOR. Il effectue l'opération OU exclusif sur chaque paire de bits. Il est essentiel de noter qu'il n'y a pas d'opérateur booléen équivalent à cet opérateur.

Exemple:

Supposons que nous ayons deux nombres comme

un = 10101010

b = 01110010

Maintenant un ^ b = 10101010 ^ 01110010 = 11011000

Vous pouvez comprendre XOR de la manière suivante. Supposons que vous ayez un bit, 0 ou 1, que vous appelez A. Maintenant, lorsque vous prenez A XOR 0, vous récupérez A. Donc, si A est 1, vous obtenez 1, et vice versa. Lorsque vous prenez A XOR 1, cela signifie que vous retournez A. Donc, si A vaut 1, vous obtenez 0 et vice versa.

Si vous implémentez l'opération XOR au niveau du bit deux fois, c'est-à-dire que vous avez deux bits, A et B, et que vous définissez C = A XOR B, puis effectuez C XOR B. Dans ce cas, le résultat que vous obtenez est A XOR B XOR C. Soit il retourne chaque bit de A deux fois, soit il ne retourne aucun bit. Par conséquent, vous récupérez simplement un A tel quel.

Vous pouvez considérer l'opération XOR binaire comme une sorte de twiddle sélectif. Si vous implémentez XOR sur deux nombres, dont l'un est tous des 1, le résultat équivaut à une rotation.

5. Opérateur de décalage à gauche :

Cet opérateur au niveau du bit décale tous les bits vers la gauche d'un certain nombre de bits spécifiés. Les positions de bit que l'opérateur de décalage à gauche a vidées sont remplies de 0. Son symbole est <<.

En C ou C++, cela fonctionne de telle sorte qu'il prend d'abord deux nombres, décale à gauche les bits du premier opérande et le deuxième opérande indique de combien de positions décaler le nombre.

Syntaxe:

un <<= 5

Voici l'exemple de programme C/C++ pour implémenter l'opérateur de décalage vers la gauche :

int main()

{

int a = 5 ;

un <<= 2;

compte << "x : " << x << endl;

}

Sortie : a = 20

Cours et articles populaires sur le génie logiciel

Programmes populaires
Programme exécutif PG en développement de logiciels - IIIT B Programme de certificat Blockchain - PURDUE Programme de certificat de cybersécurité - PURDUE MSC en informatique - IIIT B
Autres articles populaires
Salaire d'ingénieur cloud aux États-Unis 2021-22 Salaire d'AWS Solution Architect aux États-Unis Salaire d'un développeur backend aux États-Unis Salaire de développeur front-end aux États-Unis
Salaire de développeur web aux Etats-Unis Questions d'entretien de Scrum Master en 2022 Comment démarrer une carrière dans la cybersécurité en 2022 ? Options de carrière aux États-Unis pour les étudiants en génie

6. Opérateur de décalage à droite :

Cet opérateur au niveau du bit décale tous les bits vers la droite d'un certain nombre de bits spécifiés. Son symbole est >>. En C ou C++, cet opérateur prend d'abord deux nombres, décale à droite les bits du premier opérande et le deuxième opérande spécifie la quantité de décalage sur le nombre.

Syntaxe:

un >>= 5

Un exemple de programme C/C++ pour implémenter l'opérateur de décalage vers la droite :

int main() {

int a = 5 ;

un >> = 2 ;

compte << "x : " << x << endl;

}

Sortie : a = 1

Cours et articles populaires sur le génie logiciel

Programmes populaires
Programme exécutif PG en développement de logiciels - IIIT B Programme de certificat Blockchain - PURDUE Programme de certificat de cybersécurité - PURDUE MSC en informatique - IIIT B
Autres articles populaires
Salaire d'ingénieur cloud aux États-Unis 2021-22 Salaire d'AWS Solution Architect aux États-Unis Salaire d'un développeur backend aux États-Unis Salaire de développeur front-end aux États-Unis
Salaire de développeur web aux Etats-Unis Questions d'entretien de Scrum Master en 2022 Comment démarrer une carrière dans la cybersécurité en 2022 ? Options de carrière aux États-Unis pour les étudiants en génie

Quand devez-vous utiliser les opérateurs au niveau du bit en C et C++ ?

  • Économise de l'espace :

Les opérateurs au niveau du bit permettent d'économiser de l'espace. Un problème courant rencontré lorsque vous travaillez au niveau des bits individuels est que si vous voulez plus d'espace ou pour gagner du temps, vous devrez peut-être reconcevoir les énormes portions de votre programme. Mais l'utilisation d'opérateurs au niveau du bit en C et C++ peut éliminer les dépendances ; par exemple, vous pouvez utiliser ~0 pour obtenir le plus grand nombre entier possible. Le décalage de bit pour multiplier par deux est une opération typique. Par conséquent, cela n'affecte pas la lisibilité, contrairement à l'utilisation avancée de la manipulation de bits qui peut avoir un impact dans certains cas.

  • Chiffrement:

Si vous travaillez sur un type de cryptage ou sur un système nécessitant l'utilisation de champs de bits pour stocker les attributs booléens.

Faits uniques sur les opérateurs au niveau du bit

  • Le OU au niveau du bit de deux nombres est simplement la somme de ces nombres si aucun report n'est impliqué. Sinon, il vous suffit d'ajouter leur ET au niveau du bit. Par exemple, supposons x = 5(101) et y = 2(010). Puisqu'il n'y a pas de portage impliqué, la somme est simplement x|y. Mais, si nous changeons maintenant 'x' en 6 (110), la somme changera en x|y + x&y car maintenant le report est impliqué.
  • L'opérateur XOR au niveau du bit est le plus précieux du point de vue de l'entretien technique. Un exemple de l'un des problèmes d'entrevue liés à cela est discuté ici. "Pour l'ensemble donné de nombres composé de tous les éléments apparaissant un nombre pair de fois sauf un nombre, trouvez le nombre impair qui se produit." Vous devez faire XOR à tous les nombres pour résoudre ce problème.
  • Les opérateurs de décalage vers la droite et vers la gauche ne doivent pas être utilisés pour les nombres négatifs. Le deuxième opérande, qui détermine le nombre de décalages, contient un nombre négatif, ce qui conduit à un comportement indéfini en C & C++. Par exemple, les résultats de 1 >>- 1 et 1 << -1 ne sont pas définis.
  • Le comportement n'est pas spécifié si le décalage du nombre dépasse la capacité de l'entier. Par exemple, 1 << 65 n'est pas spécifié si les entiers sont stockés au format 64 bits.
  • Aucune opération de décalage ne se produit si le deuxième opérande (celui qui détermine le nombre de décalages) est 0.

Commencez votre voyage en informatique avec UpGrad :

Si vous souhaitez en savoir plus sur le développement frontend (JavaScript, HTML, CSS), le backend (NoSQL-MongoDB) et les microservices, vous pouvez suivre le cours de maîtrise ès sciences en informatique d'UpGrad. Dispensé par IIIT Bangalore & LJMU Alumni Status, ce cours vous aide à décrocher votre carrière en tant qu'ingénieur logiciel/développeur full-stack auprès des géants de la technologie à travers le monde.

Le cours couvre l'accès gratuit au Bootcamp de transition de carrière pour les codeurs débutants et non techniques. Vous apprendrez plus de dix langages et outils de programmation dans ce cours, vous préparant parfaitement à assumer des rôles complexes dans l'industrie.

A quoi servent les opérateurs bit à bit en C++ ?

En C++, les opérateurs au niveau du bit effectuent des opérations sur des données entières au niveau binaire. Ils fonctionnent sur des modèles de bits qui impliquent la manipulation de bits individuels. Par conséquent, une opération au niveau du bit est également appelée programmation au niveau du bit. Les opérateurs au niveau du bit en C++ sont principalement utilisés pour des calculs plus rapides car ils ne fonctionnent que sur deux chiffres, c'est-à-dire 0 et 1. Ces opérateurs peuvent également effectuer des tests et décaler les bits réels.

Pouvez-vous utiliser les opérateurs de décalage gauche et droit ensemble dans un code ?

Oui, vous pouvez combiner les opérateurs de décalage à gauche et à droite, et après cela, vous pouvez extraire les données d'une expression entière.

L'opérateur complémentaire inverse-t-il toute la séquence de code ?

Non, ce n'est pas le cas. Il inverse les 1 et les 0. Ainsi, tous les 1 deviennent des 0 et vice-versa.

Pourquoi l'autre nom de l'opérateur de complément Bitwise est-il son opérateur de complément ?

La raison en est qu'il ne prend toujours qu'un seul opérande ou une seule valeur. C'est un opérateur unaire. Lorsque vous effectuez un complément sur n'importe quel bit, tous les 0 deviennent des 1 et vice versa. Par exemple, si vous avez une expression entière avec la valeur 1111 0000. Après avoir effectué l'opération de complément au niveau du bit, la valeur devient 0000 1111.