• Post category:Opérateurs composés
  • Commentaires de la publication :0 commentaire
  • Dernière modification de la publication :mars 12, 2022
  • Temps de lecture :4 min de lecture

&= (composé au niveau du bit et)

Description :

L’opérateur composé AND au niveau du bit &= est souvent utilisé avec une variable et une constante pour forcer des bits particuliers dans une variable à l’état BAS (à 0). Ceci est souvent appelé dans les guides de programmation des bits « d’effacement » ou de « réinitialisation ».

Un examen de l’ & opérateur ET au niveau du bit :

0 0 1 1 opérande1
0 1 0 1 opérande2
----------
0 0 0 1 (opérande1 et opérande2) - résultat renvoyé

 

Syntaxe :

x &= y; // equivalent to x = x & y;

Paramètres :

x : variable. Types de données autorisés : charintlong .
y : variable ou constante. Types de données autorisés : charintlong .

Exemple de code :

Les bits qui sont « ET au niveau du bit » avec 0 sont remis à 0 donc, si myByte est une variable d’octet,

myByte & 0b00000000 = 0;

Les bits qui sont « ET au niveau du bit » avec 1 sont inchangés, donc,

myByte & 0b11111111 = myByte;

Remarques et avertissements :

Parce que nous avons affaire à des bits dans un opérateur au niveau du bit – il est pratique d’utiliser le formateur binaire avec des constantes. Les nombres ont toujours la même valeur dans d’autres représentations, ils ne sont tout simplement pas aussi faciles à comprendre. De plus, 0b00000000 est affiché pour plus de clarté, mais zéro dans n’importe quel format de nombre est zéro (hummm quelque chose de philosophique là-bas ?)

Par conséquent – pour effacer (mettre à zéro) les bits 0 et 1 d’une variable, tout en laissant le reste de la variable inchangé, utilisez l’opérateur composé AND au niveau du bit (&=) avec la constante 0b11111100

1 0 1 0 1 0 1 0 variable
1 1 1 1 1 1 0 0 masque
----------------------
1 0 1 0 1 0 0 0
bits inchangés
bits effacés

 

Voici la même représentation avec les bits de la variable remplacés par le symbole x

variable xxxxxxx
1 1 1 1 1 1 0 0 masque
----------------------
xxxxxx 0 0
bits inchangés
bits effacés

 

Donc si:

myByte = 0b10101010;
myByte &= 0b11111100; // résulte en 0b101010002

 


 

Source : https://www.arduino.cc/reference/en/language/structure/compound-operators/compoundbitwiseand/

 

Laisser un commentaire