© Éditions Eyrolles
221
chapitre n° 13
Les possibilités du langage C proches de la machine
Voici quelques exemples de résultats obtenus à l’aide de ces opérateurs. Nous avons supposé
que les variables n et p étaient toutes deux du type int et que ce dernier utilisait 16 bits. Nous
avons systématiquement indiqué les valeurs sous forme binaire, hexadécimale et décimale :
n
0000010101101110
056E
1390
p
0000001110110011
03B3
947
______________________________________________________
n & p
0000000100100010
0122
290
n | p
0000011111111111
07FF
2047
n ^ p
0000011011011101
06DD
1757
~ n
1111101010010001
FA91
-1391
Notez que le qualificatif signed/unsigned des opérandes n’a pas d’incidence sur le motif
binaire créé par ces opérateurs. Cependant, le type même du résultat produit se trouve défini
par les règles habituelles. Ainsi, dans nos précédents exemples, la valeur décimale de ~n serait
64145 si n avait été déclaré unsigned int (ce qui ne change pas son motif binaire).
3.3 Les opérateurs de décalage
Ils permettent de réaliser des décalages à droite ou à gauche sur le motif binaire correspondant
à leur premier opérande. L’amplitude du décalage, exprimée en nombre de bits, est fournie par
le second opérande. Par exemple :
n << 2
fournit comme résultat la valeur obtenue en décalant le motif binaire de n de 2 bits vers la
gauche ; les bits de gauche sont perdus et des bits à zéro apparaissent à droite.
De même :
n >> 3
fournit comme résultat la valeur obtenue en décalant le motif binaire de n de 3 bits vers la
droite. Cette fois, les bits de droite sont perdus, tandis que des bits apparaissent à gauche.
Ces derniers dépendent du qualificatif signed/unsigned du premier opérande. S’il s’agit
de unsigned, les bits ainsi créés à gauche sont à zéro. S’il s’agit de signed, les bits ainsi
créés seront égaux au bit signe (il y a, ici encore, propagation du bit signe).
Voici quelques exemples de résultats obtenus à l’aide de ces opérateurs de décalage. La variable
n est supposée signed int, tandis que p est supposée unsigned int.
(signed)
n
0000010101101110
1010110111011110
(unsigned) p
0000010101101110
1010110111011110
______________________________________________________
n << 2
0001010110111000
1011011101111000
n >> 3
0000000010101101
1111011011101111
p >> 3
0000000010101101
0001010110111011
Delannoy Livre.book Page 221 Mercredi, 6. mai 2009 4:26 16
221
chapitre n° 13
Les possibilités du langage C proches de la machine
Voici quelques exemples de résultats obtenus à l’aide de ces opérateurs. Nous avons supposé
que les variables n et p étaient toutes deux du type int et que ce dernier utilisait 16 bits. Nous
avons systématiquement indiqué les valeurs sous forme binaire, hexadécimale et décimale :
n
0000010101101110
056E
1390
p
0000001110110011
03B3
947
______________________________________________________
n & p
0000000100100010
0122
290
n | p
0000011111111111
07FF
2047
n ^ p
0000011011011101
06DD
1757
~ n
1111101010010001
FA91
-1391
Notez que le qualificatif signed/unsigned des opérandes n’a pas d’incidence sur le motif
binaire créé par ces opérateurs. Cependant, le type même du résultat produit se trouve défini
par les règles habituelles. Ainsi, dans nos précédents exemples, la valeur décimale de ~n serait
64145 si n avait été déclaré unsigned int (ce qui ne change pas son motif binaire).
3.3 Les opérateurs de décalage
Ils permettent de réaliser des décalages à droite ou à gauche sur le motif binaire correspondant
à leur premier opérande. L’amplitude du décalage, exprimée en nombre de bits, est fournie par
le second opérande. Par exemple :
n << 2
fournit comme résultat la valeur obtenue en décalant le motif binaire de n de 2 bits vers la
gauche ; les bits de gauche sont perdus et des bits à zéro apparaissent à droite.
De même :
n >> 3
fournit comme résultat la valeur obtenue en décalant le motif binaire de n de 3 bits vers la
droite. Cette fois, les bits de droite sont perdus, tandis que des bits apparaissent à gauche.
Ces derniers dépendent du qualificatif signed/unsigned du premier opérande. S’il s’agit
de unsigned, les bits ainsi créés à gauche sont à zéro. S’il s’agit de signed, les bits ainsi
créés seront égaux au bit signe (il y a, ici encore, propagation du bit signe).
Voici quelques exemples de résultats obtenus à l’aide de ces opérateurs de décalage. La variable
n est supposée signed int, tandis que p est supposée unsigned int.
(signed)
n
0000010101101110
1010110111011110
(unsigned) p
0000010101101110
1010110111011110
______________________________________________________
n << 2
0001010110111000
1011011101111000
n >> 3
0000000010101101
1111011011101111
p >> 3
0000000010101101
0001010110111011
Delannoy Livre.book Page 221 Mercredi, 6. mai 2009 4:26 16
