Coincoinisback
Messages postés4Date d'inscriptionsamedi 7 mai 2011StatutMembreDernière intervention 9 mai 2011
-
7 mai 2011 à 17:32
Coincoinisback
Messages postés4Date d'inscriptionsamedi 7 mai 2011StatutMembreDernière intervention 9 mai 2011
-
8 mai 2011 à 20:51
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!
A voir également:
224 en binaire
Convertir un nombre décimal en binaire langage c - Meilleures réponses
pop70
Messages postés181Date d'inscriptionmardi 6 avril 2010StatutMembreDernière intervention 7 janvier 201210 7 mai 2011 à 19:16
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;
}