|

^ (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/

Publications similaires

Laisser un commentaire

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