Cours langage C manipulation de bits

Extrait du cours langage C manipulation de bits

Le binaire
représentation en base 2
premières puissances de 2 à connaître par cœur
pratique pour détecter des valeurs spéciales (1023, 4097, …)
Poids fort/poids faible
poids fort = grandes puissances de 2
poids faible = petites puissances de 2
Poids fort/poids faible
idem pour les types sur plusieurs octets
Entiers signés
codage qui dépend de l’implémentation!
bit de poids fort = signe (peu utilisé):
00000010 = +2 en décimal
10000010 = -2 en décimal
problèmes:
0 a deux représentations (00000000 et 10000000)
l’addition ne marche pas:10000100+00000011=10000111 (-4+3=-7)
Complément à deux
on prend la valeur absolue
on inverse les bits
on ajoute 1 en ignorant les dépassement
exemple: -6 codé sur un octet
6 = 00000110 ⇒ ~6 = 11111001
~6+1 = 11111010 ⇒ 250
int main(int argc,char* argv[]) {
printf(« %d\n »,(unsigned char)(-6));
return 0;
}
l’addition fonctionne:
11111100+00000011=11111111 (-4+3=-1)
écriture unique de zéro: -0=0
-(-x)=x
Complément à deux
lors d’une conversion de type, une transformation est appliquée
int main(int argc,char* argv[]) {
char c=-26;
int i=c;
printf(« %d %d\n »,(unsigned char)c,i);
return 0;
}
on obtient bien un int qui vaut -26 et non pas 230
Opérateurs bit à bit
ne fonctionnent que sur les types entiers
à ne pas confondre avec les opérateurs
logiques && et ||
……..

Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Cours langage C manipulation de bits (288 KO) (Cours PDF)
Cours langage C

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *