^ (XOR au niveau du bit)
Description :
Il existe un opérateur inhabituel en C++ appelé OU EXCLUSIF bit à bit, également appelé XOR bit à bit. (En anglais, on le prononce généralement « eks-or ».) L’opérateur XOR bit à bit s’écrit avec le symbole caret ^. Une opération XOR bit à 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 operand1 0 1 0 1 operand2 ---------- 0 1 1 0 (operand1 ^ operand2) - returned result
Exemple de code :
int x = 12; // binaire: 1100 int y = 10; // binaire: 1010 int z = x ^ y; // binaire: 0110, ou décimal 6
L’opérateur ^ est souvent utilisé pour basculer (c’est-à-dire passer de 0 à 1, ou de 1 à 0) certains bits d’une expression entière. Dans une opération XOR bit à bit, si le bit de masque contient un 1, ce bit est inversé ; s’il contient un 0, le bit reste inchangé.
// Remarque : ce code utilise des registres spécifiques aux microcontrôleurs AVR (Uno, Nano, Leonardo, Mega, etc.) // il ne sera pas compilé pour d'autres architectures void setup() { DDRB = DDRB | 0b00100000; // régler PB5 (pin 13 sur Uno/Nano, pin 9 sur Leonardo/Micro, pin 11 sur Mega) à OUTPUT Serial.begin(9600); } void loop() { PORTB = PORTB ^ 0b00100000; // inverser PB5, laisser les autres intacts delay(100); }
Source : https://docs.arduino.cc/language-reference/en/structure/bitwise-operators/bitwiseXor/