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 :
Code C/C++ :
#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