Main

Référence : Langage Arduino : [ Mini | Standard | Etendue | Maxi ] Librairies : [ Vue d'ensemble | Synthèse ] Infos : [ Comparaison | Changements ]

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 ou à l'adresse suivante : support_at_mon-club-elec_point_fr

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-2012) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.