Conversion décimal binaire en 32 bits en C

pauline1602 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
 le père -
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 père
 
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   Statut Contributeur Dernière intervention   1 846
 
printf('1'); else printf('0');
Je verrais plutôt : printf("1"); else printf("0");
0
le père
 
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
le père
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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