Travailler sur les nombres binaires

Résolu/Fermé
D_A_R_K_O_S
Messages postés
98
Date d'inscription
vendredi 1 février 2013
Statut
Membre
Dernière intervention
23 juin 2015
- 9 nov. 2013 à 16:30
KX
Messages postés
16585
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 août 2022
- 9 nov. 2013 à 21:08
Bonjours, je débute la programmation en C et j'ai trouver sur internet un code - qui marche - qui décale les bits d'un caractère.
"c<<= 1; décale les bits du caractère c une fois, mais que fait "unsigned char msb = (c & 0x80) >> 7;" ? Qu'est ce que ça signifie ?


CODE :

unsigned char msb = (c & 0x80) >> 7; /* Le bit le plus a gauche */
c <<= 1;
c |= msb;
return c;

Merci d'avance pour vos réponses.

4 réponses

D_A_R_K_O_S
Messages postés
98
Date d'inscription
vendredi 1 février 2013
Statut
Membre
Dernière intervention
23 juin 2015
7
9 nov. 2013 à 16:45
Merci de la réponse c'est ce que je cherchais ! Mais que ce signifie "0X80" ?
1
KX
Messages postés
16585
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 août 2022
2 972
9 nov. 2013 à 16:52
C'est l'écriture en base hexadécimale : 0x80 = 128 = 0100 0000
Du coup en faisant un & seul le 7è bit est conservé (tout le reste étant à 0), donc avec le décalage de 7 bits à droite on ne peut obtenir que deux valeurs : 0 ou 1 (la valeur du 7è bit au départ)
0
fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 811
9 nov. 2013 à 20:54
KX, le magicien des nombres,
0x8, c'est 1000 et pas 0100 ;-)
0
KX
Messages postés
16585
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 août 2022
2 972
9 nov. 2013 à 20:57
Je suis si rouillé que ça ? 0x80 = 8x16 + 0 = 128 = 2^7 = 0100 0000
0
fiddy
Messages postés
11067
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 811
9 nov. 2013 à 21:05
Il faut croire que oui ^^.
2^7 fait bien 128, il faut donc positionner le 8ème bit et non le 7ème.
0
KX
Messages postés
16585
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 août 2022
2 972
9 nov. 2013 à 21:08
Ok. Ok. Je vais mettre un peu d'huile dans mes rouages ;-)
0
KX
Messages postés
16585
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 août 2022
2 972
9 nov. 2013 à 16:32
0
D_A_R_K_O_S
Messages postés
98
Date d'inscription
vendredi 1 février 2013
Statut
Membre
Dernière intervention
23 juin 2015
7
9 nov. 2013 à 17:01
Ok merci pour ces explications !
0
Sugel
Messages postés
4068
Date d'inscription
jeudi 18 août 2011
Statut
Membre
Dernière intervention
19 juin 2017
721
9 nov. 2013 à 17:30
C'est fou ce que je peux me sentir c*n en lisant ce topic x)

ok, je sors ^^

->[]
0