^= (xor composé au niveau du bit)

Description :

L’opérateur binaire XOR composé ^= est souvent utilisé avec une variable et une constante pour basculer (inverser) des bits particuliers dans une variable.

Un examen de l’ ^ opérateur Bitwise XOR :

0 0 1 1 opérande1
0 1 0 1 opérande2
----------
0 1 1 0 (opérande1 ^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 « XOR au niveau du bit » avec 0 restent inchangés. Donc, si myByte est une variable d’octet,

myByte ^ 0b00000000 = myByte;

Les bits qui sont « XOR au niveau du bit » avec 1 sont basculés ainsi :

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.

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

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

 

Voici la même représentation avec les bits variables remplacés par le symbole x. ~x représente le complément de x.

variable xxxxxxx
0 0 0 0 0 0 1 1 masque
----------------------
xxxxxx ~x ~x
bits inchangés
                 jeu de bits

 

Donc si :

myByte = 0b10101010;
myByte ^= 0b00000011 == 0b10101001;

 


 

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

 

Laisser un commentaire