Cours 7.3. Forçage à un

Le forçage à un consiste à mettre un ou plusieurs bits d'un mot binaire à un tout en conservant la valeur des autres.

Masquage binaire, forçage à un

Fonctionnement

Le forçage à un se réalise grâce à un OU logique bit à bit entre le registre à forcer et un masque. Les bits du masque sont définis tels que :

Supposons que l'on souhaite forcer à un les 4 bits de poids faibles d'un mot de 8 bits. Le masque sera :

$$ masque = (0000~1111)_2 = (0F)_{16} $$

$$ \begin{array}[t]{r} b_7 & b_6 & b_5 & b_4 & \, & b_3 & b_2 & b_1 & b_0 & <= & mot \: initial \\ + \quad 0 & 0 & 0 & 0 & \, & 1 & 1 & 1 & 1 & <= & masque \\ \hline b_7 & b_6 & b_5 & b_4 & \, & 1 & 1 & 1 & 1 & <= & résultat \end{array} $$

Ce principe s'appuie sur les relations suivantes de l'algèbre de Boole :

Le masque de cet exemple peut être appliqué à la variable reg grâce à l'instruction suivante :

resultat = donnee | 0x0F;

Exercice 1

Complétez le programme ci-dessous afin de forcer à un le bit de poids faible de la variable reg :

// | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
unsigned char reg = 0xA2;
printf ("Avant  : ");
affBin(reg);

// Forçage à un du bit de poids faible
// COMPLETEZ ICI

// Affiche le résultat
printf ("Après  : ");
affBin(reg);  

Exercice 2

Complétez le programme ci-dessous afin de forcer à un les 5 bits de poids fort de la variable reg :

// | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
unsigned char reg = 0xA2;
printf ("Avant  : ");
affBin(reg);

// Forçage à un des 5 bits de poids forts
// COMPLETEZ ICI

// Affiche le résultat
printf ("Après  : ");
affBin(reg); 

Quiz

Quel opérateur faut-il utiliser pour réaliser un forçage à un ?

Vérifier Bravo ! Un forçage à un se fait avec un OU logigue bit à bit. Essaie encore ...

Dans un forçage à un, les bits du masque qui sont à 1 permettent de ...

Vérifier Bravo ! Les bits à un du masque permettent de forcer à 1, car en logique booléenne : \( x + 1 = 1 \). Essaie encore ...

Dans un forçage à un, les bits du masque qui sont à 0 permettent de ...

Vérifier Bravo ! Les bits à zéro du masque permettent de conserver les bits initiaux, car en logique booléenne : \( x + 0 = x \). Essaie encore ...

Que vaut reg après ces instructions ?

reg = 0xAA;
reg |= 0x0F;
Vérifier Bravo ! Le masque force à un les 4 bits de poids faible. Essaie encore ...

Voir aussi


Dernière mise à jour : 22/11/2022