Conversion décimale binaire

Signaler
Messages postés
4
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
9 mai 2011
-
Messages postés
4
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
9 mai 2011
-
Bonjour,
je dois écrire un programme qui affiche la conversion binaire d'un nombre entier (compris entre 0 et 4 294 067 295, codé sur 32 bits) mais l'algorithme que j'ai écris de fonctionne pas.
Malgrès toutes mes tentatives et recherches je n'ai toujours pas réussi.
Si quelqu'un pouvait m'aider à trouver les erreurs ce serait gentil!



#include <stdio.h>
#include <stdlib.h>

int convertisseur ()
{
int decimal;
int binaire = 2;
printf("Entrez le nombre entier : ");
scanf ("%d", &decimal);
while (binaire <= decimal)
binaire *= 2;
binaire /= 2;
while (binaire !=0)
{
if (binaire <= decimal)
{
printf("1");
decimal -= binaire;
}
else
printf("0");
binaire /= 2;
}
printf ("\n");
printf ("Le nombre binaire est %d");
return binaire;
}



MERCI!

2 réponses

Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
8
Bonjour, le problème vient du fait que tu souhaites calculer de 0 à 4 294 067 295, or sur 32bits, un entier va de -2 147 483 648 à 2 147 483 647, ce qu'il faut c'est donc un unsigned int qui va de 0 à 4 294 967 295. De plus en testant le code avec ce type, on s'aperçoit que de mettre long long diminue le temps de calcul de façon considérable.
Aussi, il ne faut pas oublier en mettant unsigned de faire : %u et non %d dans le scanf.

Au final :

#include <stdio.h>
#include <stdlib.h>

int convertisseur ()
{
    long long unsigned int decimal;
    long long unsigned int binaire = 2;
    printf("Entrez le nombre entier : ");
    scanf ("%u", &decimal);
    while (binaire <= decimal)
        binaire *= 2;
    binaire /= 2;
    while (binaire !=0)
    {
        if (binaire <= decimal)
        {
            printf("1");
            decimal -= binaire;
        }
        else
            printf("0");
        binaire /= 2;
    }
    printf ("\n");
    printf ("Le nombre binaire est %d");
    return binaire;
}



Cordialement,

Pop70
Messages postés
4
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
9 mai 2011

Merci Pop70!