|= (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: int, char, long.y
: variable ou constante. Types de données autorisés: int, char, long.
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/