& (ET au niveau du bit)
Description :
L’opérateur ET bit à bit en C++ est une simple esperluette &, utilisée entre deux autres expressions entières. L’opérateur ET bit à bit opère indépendamment sur chaque position de bit des expressions environnantes, selon la règle suivante : si les deux bits d’entrée sont à 1, la sortie résultante est 1 ; sinon, la sortie est 0.
Autre façon d’exprimer cela :
0 0 1 1 operand1 0 1 0 1 operand2 ---------- 0 0 0 1 (operand1 & operand2) - returned result
Dans Arduino, le type int est une valeur de 16 bits, donc l’utilisation de & entre deux expressions int provoque 16 opérations et simultanées.
Exemple de code :
Dans un fragment de code comme :
int a = 92; // in binary: 0000000001011100 int b = 101; // in binary: 0000000001100101 int c = a & b; // result: 0000000001000100, ou 68 en décimal.
Chacun des 16 bits de a et b est traité par l’opérateur ET bit à bit, et les 16 bits résultants sont stockés dans c, ce qui donne la valeur 01000100 en binaire, soit 68 en décimal.
L’une des utilisations les plus courantes de l’opérateur ET bit à bit est la sélection d’un ou plusieurs bits spécifiques dans une valeur entière, souvent appelée masquage. Voir ci-dessous un exemple (propre à l’architecture AVR).
PORTD = PORTD & 0b00000011; // clear out bits 2 - 7, laissez les broches PD0 et PD1 intactes (xx & 11 == xx)
Source : https://docs.arduino.cc/language-reference/en/structure/bitwise-operators/bitwiseAnd/