© Éditions Eyrolles
223
chapitre n° 13
Les possibilités du langage C proches de la machine
Cela peut s’avérer utile :
●
soit pour compacter l’information : par exemple, un nombre entier compris entre 0 et 15
pourra être rangé sur 4 bits au lieu de 16 (encore faudra-t-il utiliser convenablement les bits
restants) ;
●
soit pour décortiquer le contenu d’un motif binaire, par exemple un mot d’état en provenance d’un périphérique spécialisé.
Voyez cet exemple de déclaration :
struct etat
{ unsigned pret : 1 ;
unsigned ok1 : 1 ;
int donnee1
: 5 ;
int
: 3 ;
unsigned ok2 : 1 ;
int donnee2
: 4 ;
} ;
struct etat mot ;
La variable mot ainsi déclarée peut être schématisée comme suit :
Les indications figurant à la suite des « deux-points » précisent la longueur du champ en bits.
Lorsque aucun nom de champ ne figure devant cette indication de longueur, cela signifie que
l’on saute le nombre de bits correspondants (ils ne seront donc pas utilisés).
Avec ces déclarations, la notation :
mot.donnee1
désigne un entier signé pouvant prendre des valeurs comprises entre -16 et +15. Elle pourra
apparaître à n’importe quel endroit où C autorise l’emploi d’une variable de type int.
Les seuls types susceptibles d’apparaître dans des champs de bits sont int et unsigned int.
Notez que lorsqu’un champ de type int est de longueur 1, ses valeurs possibles sont 0 et -1
(et non 0 et 1, comme ce serait le cas avec le type unsigned int).
donnee1
donnee2
pret
ok1
ok2
Delannoy Livre.book Page 223 Mercredi, 6. mai 2009 4:26 16
223
chapitre n° 13
Les possibilités du langage C proches de la machine
Cela peut s’avérer utile :
●
soit pour compacter l’information : par exemple, un nombre entier compris entre 0 et 15
pourra être rangé sur 4 bits au lieu de 16 (encore faudra-t-il utiliser convenablement les bits
restants) ;
●
soit pour décortiquer le contenu d’un motif binaire, par exemple un mot d’état en provenance d’un périphérique spécialisé.
Voyez cet exemple de déclaration :
struct etat
{ unsigned pret : 1 ;
unsigned ok1 : 1 ;
int donnee1
: 5 ;
int
: 3 ;
unsigned ok2 : 1 ;
int donnee2
: 4 ;
} ;
struct etat mot ;
La variable mot ainsi déclarée peut être schématisée comme suit :
Les indications figurant à la suite des « deux-points » précisent la longueur du champ en bits.
Lorsque aucun nom de champ ne figure devant cette indication de longueur, cela signifie que
l’on saute le nombre de bits correspondants (ils ne seront donc pas utilisés).
Avec ces déclarations, la notation :
mot.donnee1
désigne un entier signé pouvant prendre des valeurs comprises entre -16 et +15. Elle pourra
apparaître à n’importe quel endroit où C autorise l’emploi d’une variable de type int.
Les seuls types susceptibles d’apparaître dans des champs de bits sont int et unsigned int.
Notez que lorsqu’un champ de type int est de longueur 1, ses valeurs possibles sont 0 et -1
(et non 0 et 1, comme ce serait le cas avec le type unsigned int).
donnee1
donnee2
pret
ok1
ok2
Delannoy Livre.book Page 223 Mercredi, 6. mai 2009 4:26 16
