& (et au niveau du bit)

Description :

L’opérateur ET au niveau du bit en C++ est une seule esperluette & , utilisée entre deux autres expressions entières. ET au niveau du bit opère indépendamment sur chaque position de bit des expressions environnantes, selon cette règle : si les deux bits d’entrée sont 1, la sortie résultante est 1, sinon la sortie est 0.

Une autre façon d’exprimer cela est :

0  0  1  1    operand1
0  1  0  1    operand2
----------
0  0  0  1    (operand1 & operand2) - résultat renvoyé

 

Dans Arduino, le type int est une valeur de 16 bits, donc l’utilisation de & entre deux expressions int provoque 16 opérations AND simultanées.

Exemple de code

Dans un fragment de code comme :

int a =  92;    // en binaire: 0000000001011100
int b = 101;    // en binaire: 0000000001100101
int c = a & b;  // résultat:    0000000001000100, ou 68 en décimal.

 

Chacun des 16 bits de a et b est traité à l’aide du AND au niveau du 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’ET au niveau du bit consiste à sélectionner un ou plusieurs bits particuliers à partir d’une valeur entière, souvent appelée masquage. Voir ci-dessous pour un exemple (spécifique à l’architecture AVR).

PORTD = PORTD & 0b00000011; // effacez les bits 2 à 7, laissez les broches PD0 et PD1 intactes (xx & 11 == xx)

 


 

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

 

Laisser un commentaire