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

Bibliothèques Discussion :

Source en C:Binaire to Decimal


Sujet :

Bibliothèques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 32
    Par défaut Source en C:Binaire to Decimal
    Bonjour,
    je recherche une petite fonction écrite en C(j'utilise C18)qui me permetterai de convertir un mot binaire en décimal.
    Je vous remercie d'avance.
    Jorg1n

    PS:dsl je me suis trompé d'endroit pour le poster...

  2. #2
    Membre éclairé Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Par défaut
    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
    /****************************************************/
    /*Programme qui convertit un binaire en décimal     */
    /****************************************************/
    #include <stdio.h>
    int main(void)
    {
    	char leBinaire;
    	int leDecimal = 0;
    	while (leBinaire != '\n')
    	{
    		scanf("%c",&leBinaire);
    		if (leBinaire == '1')
    			leDecimal = leDecimal * 2 + 1;
    		else if (leBinaire == '0')
    			leDecimal *= 2;
    	}
    	printf("%d\n", leDecimal);
    	return 0;
    }
    voici un code qui lit un binare et envoie un decimal.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 28
    Par défaut
    Simpa comme programme
    Ce serait possible d'envoyer sa réciproque?

    (conversion décimale à binaire)

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Attention, il faut savoir ce qu'on veut quand on parle de "binaire->décimal".

    Typiquement, l'ordinateur ne compte ni en "binaire", ni en "décimal". On va dire qu'il compte en natif, les notations binaire et décimale n'étant que des expressions de cela.

    Donc, voici le programme décomposé en 4 fonctions:
    Code C : 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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    #include <stdio.h>
     
    /* Le code d'emprex, modifié */
    int FromBinary(void)
    {
    	int chiffreBinaire;
    	int nombreNatif = 0;
    	do
    	{
    		chiffreBinaire = getchar();
    		if(chiffreBinaire>='0' && chiffreBinaire<='1')
    		{
    			nombreNatif *= 2;
    			nombreNatif += (chiffreBinaire - '0');
    		}
    	}
    	while(chiffreBinaire!= '\n');
    	return nombreNatif;
    }
     
    int FromDecimal(void)
    {
    	int chiffreDecimal;
    	int nombreNatif = 0;
    	do
    	{
    		chiffreDecimal = getchar();
    		if(chiffreDecimal>='0' && chiffreDecimal<='9')
    		{
    			nombreNatif *= 10;
    			nombreNatif += (chiffreDecimal - '0');
    		}
    	}
    	while(chiffreDecimal!= '\n');
    	return nombreNatif;
    }
     
    void ToDecimal(int nombreNatif)
    {
    	char chiffresDecimaux[20];
    	int nChiffre = 0;
     
    	/* Ici, on affiche les chiffres en ordre inverse qu'on les calcule.
    	   On utilise donc un tableau pour les mémoriser. */
     
    	/* Il faut un do-while ici pour afficher le 0 */
    	do
    	{
    		int chiffreDecimal = nombreNatif % 10;
    		char leChiffre = (char)(chiffreDecimal + '0');
     
    		chiffresDecimaux[nChiffre] = leChiffre;
    		nChiffre++;
     
    		nombreNatif /= 10;
    	}
    	while(nombreNatif != 0);
     
    	/* On affiche. */
    	while(nChiffre != 0)
    	{
    		nChiffre--;
    		putchar(chiffresDecimaux[nChiffre]);
    	}
    	putchar('\n');
    }
     
    void ToBinary(int nombreNatif)
    {
    	/* Cette fonction d'affichage est pour des int de 32 bits. */
    	int iBit;
    	for(iBit=0 ; iBit<32 ; iBit++)
    	{
    		int valeurBit = nombreNatif & 0x80000000;
    		nombreNatif <<= 1; /* Décale le nombre d'un bit vers la gauche */
     
    		if(valeurBit==0)
    			putchar('0');
    		else
    			putchar('1');
    	}
    	putchar('\n');
    }
     
    void TestBase(void)
    {
    	for(;;)
    	{
    		int nombre;
    		fputs("Entrer un nombre en decimal (0 pour quitter): ", stdout); fflush(stdout);
    		nombre = FromDecimal();
     
    		fputs("* En decimal: ", stdout); ToDecimal(nombre);
    		fputs("* En binaire: ", stdout); ToBinary(nombre);
    		if(nombre==0)
    			break;
     
    		fputs("Entrer un nombre en binaire: ", stdout); fflush(stdout);
    		nombre = FromBinary();
     
    		fputs("* En decimal: ", stdout); ToDecimal(nombre);
    		fputs("* En binaire: ", stdout); ToBinary(nombre);
    		putchar('\n');
    		if(nombre==0)
    			break;
    	}
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Attention, il faut savoir ce qu'on veut quand on parle de "binaire->décimal".

    Typiquement, l'ordinateur ne compte ni en "binaire", ni en "décimal". On va dire qu'il compte en natif, les notations binaire et décimale n'étant que des expressions de cela.

    Donc, voici le programme décomposé en 4 fonctions:
    Code C : 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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    #include <stdio.h>
     
    /* Le code d'emprex, modifié */
    int FromBinary(void)
    {
    	int chiffreBinaire;
    	int nombreNatif = 0;
    	do
    	{
    		chiffreBinaire = getchar();
    		if(chiffreBinaire>='0' && chiffreBinaire<='1')
    		{
    			nombreNatif *= 2;
    			nombreNatif += (chiffreBinaire - '0');
    		}
    	}
    	while(chiffreBinaire!= '\n');
    	return nombreNatif;
    }
     
    int FromDecimal(void)
    {
    	int chiffreDecimal;
    	int nombreNatif = 0;
    	do
    	{
    		chiffreDecimal = getchar();
    		if(chiffreDecimal>='0' && chiffreDecimal<='9')
    		{
    			nombreNatif *= 10;
    			nombreNatif += (chiffreDecimal - '0');
    		}
    	}
    	while(chiffreDecimal!= '\n');
    	return nombreNatif;
    }
     
    void ToDecimal(int nombreNatif)
    {
    	char chiffresDecimaux[20];
    	int nChiffre = 0;
     
    	/* Ici, on affiche les chiffres en ordre inverse qu'on les calcule.
    	   On utilise donc un tableau pour les mémoriser. */
     
    	/* Il faut un do-while ici pour afficher le 0 */
    	do
    	{
    		int chiffreDecimal = nombreNatif % 10;
    		char leChiffre = (char)(chiffreDecimal + '0');
     
    		chiffresDecimaux[nChiffre] = leChiffre;
    		nChiffre++;
     
    		nombreNatif /= 10;
    	}
    	while(nombreNatif != 0);
     
    	/* On affiche. */
    	while(nChiffre != 0)
    	{
    		nChiffre--;
    		putchar(chiffresDecimaux[nChiffre]);
    	}
    	putchar('\n');
    }
     
    void ToBinary(int nombreNatif)
    {
    	/* Cette fonction d'affichage est pour des int de 32 bits. */
    	int iBit;
    	for(iBit=0 ; iBit<32 ; iBit++)
    	{
    		int valeurBit = nombreNatif & 0x80000000;
    		nombreNatif <<= 1; /* Décale le nombre d'un bit vers la gauche */
     
    		if(valeurBit==0)
    			putchar('0');
    		else
    			putchar('1');
    	}
    	putchar('\n');
    }
     
    void TestBase(void)
    {
    	for(;;)
    	{
    		int nombre;
    		fputs("Entrer un nombre en decimal (0 pour quitter): ", stdout); fflush(stdout);
    		nombre = FromDecimal();
     
    		fputs("* En decimal: ", stdout); ToDecimal(nombre);
    		fputs("* En binaire: ", stdout); ToBinary(nombre);
    		if(nombre==0)
    			break;
     
    		fputs("Entrer un nombre en binaire: ", stdout); fflush(stdout);
    		nombre = FromBinary();
     
    		fputs("* En decimal: ", stdout); ToDecimal(nombre);
    		fputs("* En binaire: ", stdout); ToBinary(nombre);
    		putchar('\n');
    		if(nombre==0)
    			break;
    	}
    }
    C:\Users\Jean Pierre\Desktop>bindeci
    Entrer un nombre en decimal (0 pour quitter): 255
    * En decimal: 255
    * En binaire: 00000000000000000000000011111111
    Entrer un nombre en binaire: 510
    * En decimal: 2
    * En binaire: 00000000000000000000000000000010

    Entrer un nombre en decimal (0 pour quitter): 510
    * En decimal: 510
    * En binaire: 00000000000000000000000111111110
    Entrer un nombre en binaire: 1020
    * En decimal: 4
    * En binaire: 00000000000000000000000000000100

    Entrer un nombre en decimal (0 pour quitter): 1020
    * En decimal: 1020
    * En binaire: 00000000000000000000001111111100
    Entrer un nombre en binaire: 1024
    * En decimal: 2
    * En binaire: 00000000000000000000000000000010

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pourquoi entres-tu des nombres en décimal quand le programme te demande d'entrer un nombre en binaire?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre éclairé Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Par défaut
    Citation Envoyé par Demonyak Voir le message
    Simpa comme programme
    Ce serait possible d'envoyer sa réciproque?

    (conversion décimale à binaire)
    voici une fonction qui fait l'inverse
    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
    /****************************************************/
    /*                                                  */
    /* fonction qui convertit un binaire en décimal     */
    /*                                                  */
    /****************************************************/
    int convertiseurBinaireDecimal()
    {
    	char leBinaire;
    	int leDecimal = 0;
    	do
    	{
    		scanf("%c",&leBinaire);
    		if (leBinaire == '1')
    			leDecimal = leDecimal * 2 + 1;
    		else if (leBinaire == '0')
    			leDecimal *= 2;
    	}
    	while (leBinaire != '\n');
    	printf("%d\n", leDecimal);
    	return leDecimal;
    }

  8. #8
    Membre éclairé Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Par défaut
    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
    /****************************************************/
    /*                                                  */
    /* fonction qui convertit un décimal en binaire     */
    /*                                                  */
    /****************************************************/
    int convertiseurDecimalBinaire()
    {
       int leDecimal;
       int leBinaire = 2;
       scanf("%d", &leDecimal);
       while (leBinaire <= leDecimal)
          leBinaire *= 2;
       leBinaire /= 2;
       while (leBinaire != 0)
       {
          if (leBinaire <= leDecimal)
          {
             printf("1");
             leDecimal -= leBinaire;
          }
          else
             printf("0");
          leBinaire /= 2;
       }
       printf("\n");
       return leBinaire;
    }
    petite correction

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    À quoi sert-il de retourner leBinaire ?
    Pour moi, cette fonction pourrait aussi bien ne rien retourner du tout...

    (et cette fonction ne convertit pas directement le décimal en binaire: Elle demande à scanf() de convertir le décimal en int, puis elle convertit le int en binaire...)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. conversion nombre binaire en decimal
    Par mendezino dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/04/2015, 20h03
  2. Conversion binaire en decimal cas de plusieurs bit
    Par crazyvirus dans le forum C++
    Réponses: 2
    Dernier message: 09/11/2009, 09h54
  3. aide conversion binaire vers decimal
    Par getstar dans le forum Débuter
    Réponses: 7
    Dernier message: 18/06/2009, 01h50
  4. [LG] Convertir un nombre binaire en décimal
    Par minela28x dans le forum Langage
    Réponses: 5
    Dernier message: 05/01/2006, 10h33
  5. [Binaire] Conversion decimal -> binaire sans vecteur
    Par yann1979 dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2005, 16h10

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