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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 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.
A voir également:

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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
9 nov. 2013 à 20:54
KX, le magicien des nombres,
0x8, c'est 1000 et pas 0100 ;-)
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
9 nov. 2013 à 20:57
Je suis si rouillé que ça ? 0x80 = 8x16 + 0 = 128 = 2^7 = 0100 0000
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
9 nov. 2013 à 21:08
Ok. Ok. Je vais mettre un peu d'huile dans mes rouages ;-)
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
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 4076 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 725
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