Référence du Langage Arduino : Mini | Standard | Etendue | Librairies | Comparaison

ET bit à bit composé (&=), OU bit à bit composé (|=)


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.

ET bit à bit composé (&=)

Description

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.

Syntaxe

x &= y;   // équivalent de x = x & y; 

Paramètres

  • x: une variable entière de type char, int ou long
  • y: une constante entière ou une variable entière de type char, int, ou long

Example

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;

OU bit à bit composé (|=)

Description

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.

Syntaxe

x |= y;   // équivalent de x = x | y; 

Paramètres

  • x: une variable entière de type char, int ou long
  • y: une constante entière ou une variable entière de type char, int, ou long

Exemple:

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 :

Commentaires utilisateurs

  • Très utile en pratique ces techniques de mise à 0/1 de bits précis d'une variable !

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.