Conversion décimal binaire en 32 bits en C

Fermé
pauline1602 Messages postés 3 Date d'inscription lundi 2 avril 2012 Statut Membre Dernière intervention 2 avril 2012 - 2 avril 2012 à 14:18
 le père - 3 avril 2012 à 10:20
Bonjour,

j'ai un petit soucis pour un exercice que je n'arrive pas a résoudre malgrés mes nombreux essais. Je n'arrive pas a créer un programme qui fasse la conversion d'un nombre decimal à un nombre binaire en 32 bits. c'est le 32 bits qui me dérrange sinon jai un programme. mais si vous pouvez m'aider voici mon sujet :

Ecrivez un programme qui affiche la conversion binaire d'un nombre entier (compris entre 0 et 4 294 967 295 et donc codé sur 32 bits) donné par l'utilisateur. Attention, vous devrez donner la conversion sur 32 bits, c'est à dire que les 0 inutiles devant le nombre binaire seront quand même donnés.

en tout cas MERCI d'avance :)

A voir également:

4 réponses

Le for que tu as vu en cours n'est qu'un exemple, l'instruction for est bien plus générale et plus puissante que ça.
Dans sa définition, il n'est pas question de comparaison ni d'incrémentation - même si c'est la manière la plus classique de s'en servir.
Quant au ? : , c'est un opérateur qui signifie : si ce qui est avant ? est vrai ( c'est à dire différent de 0) la valeur est celle comprise entre ? et : , sinon c'est celle indiquée après le :
Ou, si tu préfères :
a = condition ? sivvrai : sifaux;
si condition est vraie, a recevra la valeur sivrai, sinon a recevra la valeur sifaux.
Ça permet d'écrire de manière abrégée un test simple.

Quand on mélange tout ça, on arrive vite à quelque chose d'illisible et je crois que j'en ai donné un exemple.

Pour te donner une version que tu devrais pouvoir comprendre, si tu as une petite idée de ce qu'est un nombre binaire :
(je n'ai pas essayé)

  unsigned x=128954;
  unsigned msk = 0x80000000;
  int k;
  for (k = 0; k<32; k++) {
    if (x & msk) printf('1'); else printf('0');
    msk = msk >>1;
  }
2
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
3 avril 2012 à 00:23
printf('1'); else printf('0');
Je verrais plutôt : printf("1"); else printf("0");
0
Tout à fait fiddy, merci de la correction. Il faut dire que n'ai jamais beaucoup pratiqué le C, et que je baigne plutôt dans le PHP depuis quelques années.
0
Bonjour

Si ton C utilise des entiers sur 32 bits ou plus, il n'y a aucun calcul à faire, puisque les nombres sont codés en binaire à l'intérieur des variables. Il y a juste à tester les bits.
Pour le fun :

  unsigned x=128954;
  unsigned msk;
  for (msk=0x80000000; msk; msk>>=1) printf("%c",(x & msk)?'1':'0');

Réfléchis à comment ce programme marche (car il marche) , pour le cas où ton prof te le demanderait ^^
1
pauline1602 Messages postés 3 Date d'inscription lundi 2 avril 2012 Statut Membre Dernière intervention 2 avril 2012
2 avril 2012 à 15:53
ok bah en tout cas MERCI, et oui il marche car javais des chiffres a convertir et j'ai tout bon! il reste plus qu'a le déchiffrer comme je doit le rendre^^

mais MERCI BEAUCOUP !
0
pauline1602 Messages postés 3 Date d'inscription lundi 2 avril 2012 Statut Membre Dernière intervention 2 avril 2012
2 avril 2012 à 17:51
dsl mais je ne compren pas la dernière ligne pourrai tu l'écrire différament ?
moi j'ai vue en cours :
for(inicialisation;i<valeur;incrémentation)
et je ne comprend pas non plus ceci (x & msk)?'1':'0'

merci
0