Le tableau ci-dessous synthétise les différents type de masquages :
Description | Opérateur | Opérateur en C | 0 dans le masque |
1 dans le masque |
---|---|---|---|---|
Forçage à zéro | ET bit à bit | & |
Force à zéro | Conserve le bit |
Forçage à un | OU bit à bit | | |
Conserve le bit | Force à un |
Inversion de bits | OU exclusif bit à bit | ^ |
Conserve le bit | Inverse le bit |
$$ reg = ( b_7 \: b_6 \: b_5 \: b_4 \; b_3 \: b_2 \: b_1 \: b_0 )_2 $$
Complétez le programme ci-dessous afin de :
// | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
unsigned char reg = 0x55;
printf ("Avant : ");
affBin(reg);
// Force b0 et b1 à 1
// COMPLETEZ ICI
// Force b2 et b3 à 0
// COMPLETEZ ICI
// Inverse b4 et b5
// COMPLETEZ ICI
// Affiche le résultat
printf ("Après : ");
affBin(reg);
Complétez le programme ci-dessous afin de :
// | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
unsigned char reg = 0x55;
printf ("Avant : ");
affBin(reg);
// Force les 4 bits de poids faible à 0
// et les 4 bits de poids fort à 1
// COMPLETEZ ICI
// Affiche le résultat
printf ("Après : ");
affBin(reg);
Quel opérateur faut-il utiliser pour inverser certains bits en conservant les autres ?
Quel opérateur faut-il utiliser pour réaliser un forçage à zéro ?
Quel opérateur faut-il utiliser pour réaliser un forçage à un ?
Quels instructions permettent de forcer les 8 bits à zéro ?
reg |= 0x00;
reg &= 0x00;
reg &= 0xFF;