¿Cómo convertir de IEEE 754 de precisión simple formato de punto flotante a decimal?
Pregunta
Yo entiendo que el primer bit es el signo y que los siguientes 8 bits es el exponente. Así que en este ejemplo se obtiene 1,1001 * 2 ^ -4? ¿Cómo puedo entonces interpreto esto en decimal?
0 01111011 10010000000000000000000
Solución
Dado que ya cuenta de que esto es (en binario) 1.1001 x 10 ^ -100, ahora sólo hay que convertir el número binario a decimal.
En decimal, cada dígito tiene un valor de un décimo tanto como la anterior. En binario, cada dígito tiene un valor de un medio tanto como la anterior.
En primer lugar 1,1001 x 10 ^ -100 = 0,00011001.
Lo que es ...
0 * 1 0 * 1
+ 0 * 1/2 + 0 * 0.5
+ 0 * 1/4 + 0 * 0.25
+ 0 * 1/8 + 0 * 0.125
+ 1 * 1/16 + 1 * 0.0625
+ 1 * 1/32 + 1 * 0.03125
+ 0 * 1/64 + 0 * 0.015625
+ 0 * 1/128 + 0 * 0.0078125
+ 1 * 1/256 + 1 * 0.00390625
0,0625 + 0,03125 + 0,00390625 0,09765625 =
Eso es todo lo que hay que hacer.
Otros consejos
1.1001b
es 1*1 + 0.5*1 + 0.25*0 + 0.125*0 + 0.0625*1
, o 1.5625
. Que se multiplican por 2**-4
(0.0625
) para obtener 0,09765625 .
en C:
int fl = *(int*)&floatVar;