Les Entrées & Sorties "tout ou rien"

Icône de l'outil pédagogique Rappels de langage C
  • opération ET bit à bit : &
  • opération OU bit à bit : | (touches Alt+Gr+6 sur un clavier AZERTY)
  • complément bit à bit : ~
  • comparaison « égal à » : ==
  • comparaison « différent de » : !=

Icône de l'outil pédagogique Rappel sur les masques en langage C

On s'intéresse à une variable a de la taille d'un octet (8 bits soit matériellement 8 fils électriques).
Définition de a :

unsigned char a;

La variable a est constituée de 8 bits numérotés de 7 à 0. Le bit 7 est le poids fort et le bit 0 est le poids faible.
Exemple si la valeur de a est 0x75 en hexadécimal ou 117 en décimal :

 



 

 


Icône de l'outil pédagogique Tester un bit

Pour tester un bit, on effectue une opération ET et on compare le résultat à zéro.

On construit le masque en mettant à 1 le bit à tester.

Si on veut tester que le bit est à 1 on fera une comparaison « différent de » zéro.

Si on veut tester que le bit est à 0 on fera une comparaison « égal à » zéro.

Exemples :

  • Si on veut tester si le bit 3 de a est à 1, on écrira :


if ( (a & 0x08) != 0) {

// instructions à exécuter si le bit 3 de a est à 1

}


 

 

Ici, le résultat du test est faux car le bit 3 de a est à 0.

 

  • Si on avait testé si le bit 4 de a est à 1, on aurait obtenu :

if ( (a & 0x10) != 0) {

// instructions à exécuter si le bit 4 de a est à 1

}

 


 

Ici, le résultat du test est vrai car le bit 4 de a est à 1.

 

  • Pour tester si le bit 1 de a est à 0, on écrira :

if ( (a & 0x02) == 0) {

// instructions à exécuter si le bit 1 de a est à 0

}


 

Ici, le résultat du test est vrai car le bit 1 de a est à 0.

 

 

  • Pour tester si le bit 6 de a est à 0, on écrira :

 

if ( (a & 0x40) == 0) {

// instructions à exécuter si le bit 6 de a est à 0

}



Ici, le résultat du test est faux car le bit 6 de a est à 1.

 

Nous avons appris ici à tester un seul bit à la fois. Il est possible de tester plusieurs bits d'un octet simultanément.