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 :)

4 réponses

  1. 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
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      printf('1'); else printf('0');
      Je verrais plutôt : printf("1"); else printf("0");
      0
    2. 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
  2. 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
  3. 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
  4. 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