^ (xor au niveau du bit)

Description :

Il existe un opérateur quelque peu inhabituel en C++ appelé OU EXCLUSIF au niveau du bit, également connu sous le nom de XOR au niveau du bit. (En anglais, cela se prononce généralement « eks-or ».) L’opérateur XOR au niveau du bit est écrit en utilisant le symbole caret ^ . Une opération XOR au niveau du bit donne un 1 uniquement si les bits d’entrée sont différents, sinon elle donne un 0.

Précisément,

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

 

Exemple de code :

int x = 12; // binaire: 1100
int y = 10; // binaire: 1010
int z = x ^ y; // binaire: 0110, ou decimal 60001111111111110

 

L’opérateur ^ est souvent utilisé pour basculer (c’est-à-dire changer de 0 à 1, ou de 1 à 0) certains des bits dans une expression entière. Dans une opération XOR au niveau du bit, s’il y a un 1 dans le bit de masque, ce bit est inversé ; s’il y a un 0, le bit n’est pas inversé et reste le même.

// Remarque : ce code utilise des registres spécifiques aux microcontrôleurs AVR (Uno, Nano, Leonardo, Mega, etc.)
// il ne compilera pas pour d'autres architectures
void setup() {
  DDRB = DDRB | 0b00100000;  // définissez PB5 (broche 13 sur Uno/Nano, broche 9 sur Leonardo/Micro, broche 11 sur Mega) comme OUTPUT
  Serial.begin(9600);
}

void loop() {
  PORTB = PORTB ^ 0b00100000;  // inverser PB5, laisser les autres intacts
  delay(100);
}

 


 

Source : https://www.arduino.cc/reference/en/language/structure/bitwise-operators/bitwisexor/

 

Laisser un commentaire