Référence du Langage Arduino : Mini | Standard | Etendue | Librairies | Comparaison
Les opérateurs composés bit à bit réalise leur opération au niveau des bits unitaires des variables. Ils sont souvent utilisés pour effacer ou initialiser des bits précis d'une variable.
Voir les opérateurs & (ET bit à bit) et |(OU bit à bit) pour le détail de leur fonctionnement, et voir également le tutoriel sur les math binaire pour plus de détails sur les opérateurs bit à bit.
L'opérateur bit à bit ET composé (&=) est souvent utilisé avec une variable ou une constante pour mettre des bits particuliers de la variable à 0. Ceci est souvent appelé dans les guides de programmation le "nettoyage" ou la "réinitialisation" des bits.
x &= y; // équivalent de x = x & y;
Tout d'abord, revoyons comment l'opérateur bit à bit ET fonctionne :
0 0 1 1 opérande 1 (1ère valeur entière)
0 1 0 1 opérande 2 (2ème valeur entière)
________
0 0 0 1 (opérande1 & opérande2) - résultat renvoyé
Les bits qui sont "ET bit à bitarisés" avec 0 sont mis à 0, donc si myByte est une variable de type byte,
myByte & B00000000 = 0;
Les bits qui sont "ET bit à bitarisés" avec 1 sont inchangés, et donc :
myByte & B11111111 = myByte;
Note : puisque nous traitons des bits avec les opérateurs bits à bits, il est plus pratique d'utiliser les expressions sous forme binaire. Les nombres ont exactement la même valeur dans les autres représentations, ils sont juste moins facile à comprendre. Ainsi, B00000000 est développé par clarté, mais 0 dans un autre format est 0 (hmmm... quelque chose de philosophique derrière çà ? ... qu'est-ce qu'un nombre ?...)
En conséquence, pour mettre à 0 les bits 0 et 1 d'une variable, en laissant le reste de la variable inchangé, utiliser l'opérateur OU bit à bit composé avec la constante B11111100 :
1 0 1 0 1 0 1 0 variable
1 1 1 1 1 1 0 0 masque
________________
1 0 1 0 1 0 0 0 résultat - Les 2ers bits à 0 - le reste de la variable est inchangé
Ici, la même représentation avec les bits de la variable remplacés avec le symbole x (représentant la valeur 0 ou 1) :
x x x x x x x x variable
1 1 1 1 1 1 0 0 masque
________________
x x x x x x 0 0 résultat - Les 2ers bits à 0 - le reste de la variable est inchangé
Ainsi :
myByte = 10101010; myByte &= B1111100 == B10101000;
L'opérateur OU bit à bit composé (|=) est souvent utilisé avec une variable et une constante pour mettre à 1 des bits particuliers de la variable.
x |= y; // équivalent de x = x | y;
Tout d'abord, revoyons comment l'opérateur bit à bit OU fonctionne :
0 0 1 1 opérande 1 (1ère valeur entière)
0 1 0 1 opérande 2 (2ème valeur entière)
________
0 1 1 1 (opérande1 | opérande2) - résultat renvoyé
Les bits qui sont "OU bit à bitarisés" avec 1 sont mis à 1, donc si myByte est une variable de type byte,
myByte & B11111111 = B11111111;
Les bits qui sont "OU bit à bitarisés" avec 0 sont inchangés, et donc :
myByte & B00000000 = myByte;
En conséquence, pour mettre à 1 les bits 0 et 1 d'une variable, en laissant le reste de la variable inchangé, utiliser l'opérateur OU bit à bit composé avec la constante B00000011 :
1 0 1 0 1 0 1 0 variable
0 0 0 0 0 0 1 1 masque
________________
1 0 1 0 1 0 1 1 résultat - Les 2ers bits à 1 - le reste de la variable est inchangé
Ici, la même représentation avec les bits de la variable remplacés avec le symbole x (représentant la valeur 0 ou 1) :
x x x x x x x x variable
0 0 0 0 0 0 1 1 masque
________________
x x x x x x 1 1 résultat - Les 2ers bits à 1 - le reste de la variable est inchangé
Ainsi :
myByte = 10101010; myByte |= B00000011 == B10101011;
Voir également :
Page d'accueil de la référence Arduino en français
Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino.
Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.
La présente traduction française commentée a été réalisée par Xavier HINAULT (2010) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.