Lo ideal sería el siguiente código tomaría un flotador en la representación IEEE 754 y convertirlo en hexadecimalIEEE 754 del flotador a hexadecimal con c - 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);
}
No estoy muy seguro de lo que va mal. Está convirtiendo el número en un número hexadecimal, pero uno muy equivocado.
123.1443 gives 40000000
43.3 gives 60000000
8 gives 0
por lo que está haciendo algo, no estoy muy seguro de qué.
ayuda se agradece
'float' se promueve a' double' en funciones variadas (ver la respuesta de James McNellis). Pruebe 'printf (" hex es% lx ", f);' en su lugar. Para código portátil, observe sizeof (doble) en comparación con sizeof (int) y sizeof (long) para determinar si se debe usar 'x' o' lx'. – tomlogic
¿Cómo sabes que es IEEE 754? –
@tomlogic: para código portable, no pase un valor de coma flotante a 'printf' con un formato que requiera un entero. El comportamiento no está definido, incluso si los tamaños coinciden. (Saludos desde 7 años en el futuro. No preguntar) –