Salut à vous!
Voila j'ai en c un petit bout de code tout bête qui a pour but, à partir d'une variable, d'afficher sa valeur en binaire.
Pour ce faire, j'ai une boucle de 32 itérations comme la suivante:
Cela fonctionne parfaitement mais une chose ne me semble pas claire et j'aimerai que l'on m'explique une chose:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int a = 1; int i = 0; for(i=31; i >=0; i--){ printf("%d ", a & (0x1 << i)); }
Supposons que ma variable A ait pour valeur 2 soit 10 en binaire.
Arrivé à l'itération ou i vaut 1, j'effectue donc un et logique entre ma valeur 2 et elle même soit 10 & 10 = 10 soit 2 en décimal.
Or quand j'affiche avec mon printf la valeur de retour( a & (0x1 << 1) ), j'obtient bien un 1 (ce qui au final me convient) mais qui ne correspond pas au final à ce que j'estime avoir calculé (la valeur 2).
Quelqu'un pourrait m'expliquer pourquoi cela se comporte ainsi?
Merci pour vos réponses!
Partager