#include <stdio.h>
#include <math.h>
/* converts to binary using logs */
int main()
{
long int decimalNUM = 0, binaryNUM = 0, exponentNUM = 0;
printf("Enter a number to be converted to binary.\t");
scanf("%ld", &decimalNUM);
fflush(stdin);
int origDEC = decimalNUM;
while (decimalNUM > 0)
{
exponentNUM = (log(decimalNUM))/(log(2));
binaryNUM += pow(10, exponentNUM);
decimalNUM -= pow(2, exponentNUM);
}
printf("\nBINARY FORM OF %ld is %ld", origDEC, binaryNUM);
getchar();
return binaryNUM;
}
Si STDIN vaut 4, il renvoie 99 et ne devrait pas l'être. Sur IDEONE, il renvoie 100. Pourquoi?C, les journaux, binaire et le numéro quatre. ils ne se mélangent pas
EDIT semble que tout nombre même au-dessus deux retours quelque chose avec elle dans nines
Pourquoi utiliseriez-vous exactement les journaux pour cela? Vous * avez déjà * le nombre en binaire. –
?? et ne pas aider – tekknolagi
Avez-vous envisagé d'utiliser des opérateurs au niveau du bit au lieu des routines mathématiques en virgule flottante? Vous réalisez que le virgule flottante est sujet à des erreurs d'arrondi, ce qui pourrait expliquer pourquoi vous obtenez 99 au lieu de 100? –