|

|= (OU composé au niveau du bit)


Description :

L’opérateur composé OU au niveau du bit |= est souvent utilisé avec une variable et une constante pour définir (mettre à 1) certains bits d’une variable.

Aperçu de l’opérateur OU au niveau du bit | :

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

Syntaxe :

x |= y; // equivalent to 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 « OR au niveau du bit » avec 0 restent inchangés, donc si myByte est une variable d’octet,

myByte | 0b00000000 = myByte;

Les bits qui sont « OR au niveau du bit » avec 1 sont mis à 1 donc :

myByte | 0b11111111 = 0b11111111;

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. Par ailleurs, 0b00000000 est indiqué pour plus de clarté, mais zéro, quel que soit le format numérique, est égal à zéro.

Par conséquent, pour définir les bits 0 et 1 d’une variable, tout en laissant le reste de la variable inchangé, utilisez l’opérateur binaire composé OU (|=) avec la constante 0b00000011.

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

bits unchanged
                 bits set

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

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

bits unchanged
                 bits set

Alors si :

myByte = 0b10101010;
myByte |= 0b00000011 == 0b10101011;

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

Publications similaires

Laisser un commentaire

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