Professional Documents
Culture Documents
Cet article a pour but de prsenter les oprateurs bit bit et leurs utilisations en langage C.
Votre avis et vos suggestions sur cet article
nous intressent !
Alors aprs votre lecture, n'hsitez pas :
Oprateurs bit bit en langage C par Emmanuel Delahaye (Espace personnel d'Emmanuel Delahaye)
-2Copyright 2008 - Emmanuel Delahaye. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000
E de dommages et intrts.
http://emmanuel-delahaye.developpez.com/tutoriels/c/
Oprateurs bit bit en langage C par Emmanuel Delahaye (Espace personnel d'Emmanuel Delahaye)
soit, en hxadcimal
000A
Les oprateurs bits permettent de modifier et de tester un ou plusieurs bits d'une donne. Ces oprateurs sont :
NOT (NON)
AND (ET)
OR (OU)
XOR (OU exclusif)
SHR (Dcalage droite)
SHL (Dcalage gauche)
0
1
1
0
NOT A
B
0
1
0
1
A
AND B
0
0
0
1
-3Copyright 2008 - Emmanuel Delahaye. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000
E de dommages et intrts.
http://emmanuel-delahaye.developpez.com/tutoriels/c/
Oprateurs bit bit en langage C par Emmanuel Delahaye (Espace personnel d'Emmanuel Delahaye)
I-D - OR (OU)
L'oprateur binaire OR combine l'tat de 2 bits selon le tableau suivant :
0
0
1
1
0
1
0
1
A OR B
0
1
1
1
B
0
1
0
1
A
XOR B
0
1
1
0
-4Copyright 2008 - Emmanuel Delahaye. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000
E de dommages et intrts.
http://emmanuel-delahaye.developpez.com/tutoriels/c/
Oprateurs bit bit en langage C par Emmanuel Delahaye (Espace personnel d'Emmanuel Delahaye)
unsigned a = 0xF0F0;
unsigned b = 2;
unsigned c = a << b; /* c == 1100 0011 1100 0000 soit 0xC3C0 */
-5Copyright 2008 - Emmanuel Delahaye. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000
E de dommages et intrts.
http://emmanuel-delahaye.developpez.com/tutoriels/c/
Oprateurs bit bit en langage C par Emmanuel Delahaye (Espace personnel d'Emmanuel Delahaye)
Compression de donnes.
Commande et tat de registres matriels.
etc.
de
/*
/*
/*
b : */
0000 0000 0000 1111 */
0000 0000 0001 0000 */
0000 0000 0001 1111 soit 0x001F */
Pour fabriquer le masque, il suffit d'utiliser un 1 que l'on dcale gauche de la valeur correspondante au poids du
bit. Par exemple :
Bit 0 : 1u << 0 = 0000 0000 0000 0001
Bit 2 : 1u << 2 = 0000 0000 0000 0100
Bit 15 : 1u << 15 = 1000 0000 0000 0000
Comme pour toute manipulation de bits (y compris avec des constantes), on utilise des valeurs non signes (d'o
le 'u').
0
a
b
c
le bit 3 de b : */
= 0x000F; /* 0000 0000 0000 1111 */
= 0xFFF7; /* 1111 1111 1111 0111 */
= a & b; /* 0000 0000 0000 0111 soit 0x0007 */
Pour fabriquer le masque, il suffit d'utiliser un 1 que l'on dcale gauche de la valeur correspondante au poids du
bit, puis on inverse les bits avec l'oprateur NON. Par exemple :
Bit 0 : ~(1u << 0) = 1111 1111 1111 1110
Bit 2 : ~(1u << 2) = 1111 1111 1111 1011
Bit 15 : ~(1u << 15) = 0111 1111 1111 1111
-6Copyright 2008 - Emmanuel Delahaye. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000
E de dommages et intrts.
http://emmanuel-delahaye.developpez.com/tutoriels/c/
Oprateurs bit bit en langage C par Emmanuel Delahaye (Espace personnel d'Emmanuel Delahaye)
II-E - Conclusion
Je laisse au lecteur le soin de refaire ces exercices, et trouver le moyen de positionner et tester plusieurs bits d'une
mme variable.
Ces macros permettent une manipulation aise des bits d'un entier jusqu' 32-bit.
-7Copyright 2008 - Emmanuel Delahaye. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000
E de dommages et intrts.
http://emmanuel-delahaye.developpez.com/tutoriels/c/