|

&= (ET composé au niveau du bit)


Description :

L’opérateur binaire AND composé &= est souvent utilisé avec une variable et une constante pour forcer certains bits d’une variable à passer à l’état BAS (à 0). Dans les guides de programmation, cette opération est souvent appelée « effacement » ou « réinitialisation » de bits.

Aperçu de l’opérateur binaire AND & :

0  0  1  1    operand1
0  1  0  1    operand2
----------
0  0  0  1    (operand1 & operand2) - returned result

Syntaxe :

x &= y; // équivalent à x = x & y;

Paramètres :

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

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 restent inchangés, donc,

myByte & 0b11111111 = myByte;

Remarques et avertissements :

Comme nous traitons des bits dans un opérateur binaire, il est pratique d’utiliser le formateur binaire avec des constantes. Les nombres conservent la même valeur dans d’autres représentations, mais ils sont plus difficiles à comprendre. De plus, 0b00000000 est indiqué pour plus de clarté, mais zéro, quel que soit le format numérique, est égal à zéro (une question de philosophie ?).

Par conséquent, pour mettre à zéro les bits 0 et 1 d’une variable, tout en laissant le reste de la variable inchangé, utilisez l’opérateur binaire composé ET (&=) avec la constante 0b11111100.

1  0  1  0  1  0  1  0    variable
1  1  1  1  1  1  0  0    mask
----------------------
1  0  1  0  1  0  0  0

bits unchanged
                 bits cleared

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

x  x  x  x  x  x  x  x    variable
1  1  1  1  1  1  0  0    mask
----------------------
x  x  x  x  x  x  0  0

bits unchanged
                 bits cleared

Alors si :

myByte = 0b10101010;
    myByte &= 0b11111100;  // aboutit à 0b10101000

Source : https://docs.arduino.cc/language-reference/en/structure/compound-operators/compoundBitwiseAnd/

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *