Idealen der folgende Code einen Schwimmer in IEEE 754 Darstellung nehmen würde und wandelt es in hexadezimalConvert ieee 754 Schwimmer mit c verhexen - printf
void convert() //gets the float input from user and turns it into hexadecimal
{
float f;
printf("Enter float: ");
scanf("%f", &f);
printf("hex is %x", f);
}
ich nicht sicher bin, was falsch läuft. Es konvertiert die Zahl in eine hexadezimale Zahl, aber eine sehr falsche.
123.1443 gives 40000000
43.3 gives 60000000
8 gives 0
so tut es etwas, ich bin nur nicht sicher, was.
würde Hilfe
'float' wird in variadischen Funktionen zum' double' befördert (siehe James McNellis 'Antwort). Probieren Sie stattdessen 'printf (" hex is% lx ", f);'. Sehen Sie für portablen Code sizeof (double) im Vergleich zu sizeof (int) und sizeof (long), um zu bestimmen, ob 'x' oder' lx' verwendet werden soll. – tomlogic
Woher wissen Sie, dass es IEEE 754 ist? –
@tomlogic: Für portablen Code übergeben Sie keinen Gleitkommawert an 'printf' mit einem Format, das eine Ganzzahl erfordert. Das Verhalten ist nicht definiert, auch wenn die Größen übereinstimmen. (Grüße aus 7 Jahren in der Zukunft. Fragen Sie nicht.) –