IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

conversion octal binaire


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Par défaut conversion octal binaire
    bonjour,

    j essaie de créer un programme qui converti un nombre octal en nombre binaire codé sur 16 bits
    si par example, l entrée est x=121 (en octal), le programme doit retourner y=0000000001010001.
    existe-t-il des functions pour convertir la base octal en binaire et comment faire pour ajouter les 0 devant la conversion afin d obtenir les 16 bits?

    merci pour votre aide.
    gilles

  2. #2
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Bonjour,

    j essaie de créer un programme qui converti un nombre octal en nombre binaire codé sur 16 bits
    Bien tu pourrais toujours nous montrer ton code.

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Bonjour,

    Pour la conversion octal ==> entier, tu peux par exemple utiliser strtoul() [1].
    Pour a conversion entier ==> binaire, tu peux tester les bits de l'entier (en partant du bit de poids fort) et afficher un 0 ou un 1 selon la valeur du bit courant. Pour tester la valeur d'un bit, tu utiliseras probablement l'opérateur "et".

    Essaye et montre-nous ce que cela donne.

    Cordialement,
    DS.

    [1] - Le faire sans utiliser cette fonction peut aussi être un bon exercice, donc c'est conseillé d'essayer.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Par défaut
    ca semble marcher pas trop mal mais ca m a l air compliqué.
    je me demander si il n yavait pas une fonction du genre oct2bin ou un truc comme ca !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <string.h>
    int main(void)
    {
       int i,j,k,x;
       int resultat[17];
       k=0;
     
       printf("entrer un octal  :");
       scanf("%o",&i);
     
       j=(int)i;
       printf("\nconversion decimal :%d",j);
     
       while (j!=1)
       {
          if (j%2==0 && j!=2)
          {
             resultat[k]=0;
             k=k+1;
             j=j/2;
          }
          else
          {
             resultat[k]=1;
             k=k+1;
             j=j-1;
          }
       }
     
       for(x=k;x<17;x++)
       {
          resultat[x]=0;
       }
     
       for(x=0;x<17;x++)
       {
          printf("\nresultat:%d",resultat[x]);
       }
     
       getchar();
       return 0;
    }

  5. #5
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Comme david schris a dit, tu pourrais convertir ton octal en décimal et utiliser une fonction permettant d'afficher sous forme binaire.

    En suivant le raisonnement de david qui me semble le mieux, voici un exemple de fonction réalisant cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #define NB_BITS 16
     
    char *conv_binaire(int nombre)
    {
             int i = 0;             //Compteur de décalage de bits
             int j = NB_BITS -1;    //Emplacement dans la chaine "binaire", on part de la fin
             char *binaire = malloc(sizeof(char) * (NB_BITS+1));
             binaire[NB_BITS]='\0'; //Caractère de fin de chaîne
     
             while(i < NB_BITS)
             {
                     if ( (nombre >> i) & 1)
                     {
                             binaire[j]='1';
                     }
                     else{
                             binaire[j]='0';
                     }
                     i++;
                     j--; 
              }
     
               return binaire;
    }

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 11
    Par défaut
    merci bien pour votre aide
    je crois pouvoir m en tirer
    le code posté dans mon message precedent est en fait faux... il ne marche pas pour tout les cas! (et bizarrement camarche pour x=121 !)

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par homeostasie
    Comme david schris a dit, tu pourrais convertir ton octal en décimal
    Je ne pense pas que David ai parlé de 'décimal'. (Je rappelle que la représentation interne des valeurs est binaire et non BCD).

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par gilles_bzh
    j essaie de créer un programme qui converti un nombre octal en nombre binaire codé sur 16 bits
    si par example, l entrée est x=121 (en octal), le programme doit retourner y=0000000001010001.
    existe-t-il des functions pour convertir la base octal en binaire et comment faire pour ajouter les 0 devant la conversion afin d obtenir les 16 bits?
    Tu parles de conversion texte vers texte ?

    "121" -> "0000000010100001"

    Il faut convertir la chaine octale en numérique avec strtoul() et la base 8, puis convertir en texte avec une fonction à écrire toi même.

    Rappel : les valeurs sont codées en binaire. Il siffit donc de tester les bits un par un et d'afficher '0' ou '1' en fonction de la valeur du bit.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/12/2005, 12h20
  2. conversion nombre binaire -> decimal
    Par spoun95 dans le forum Langage
    Réponses: 7
    Dernier message: 25/11/2005, 17h46
  3. [Binaire] Conversion decimal -> binaire sans vecteur
    Par yann1979 dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2005, 16h10
  4. conversion hexa-binaire
    Par jack69 dans le forum C
    Réponses: 8
    Dernier message: 04/04/2005, 16h33
  5. conversion ip (binaire - decimale)
    Par slim dans le forum Développement
    Réponses: 5
    Dernier message: 13/08/2004, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo