¿Cómo convertir de IEEE 754 de precisión simple formato de punto flotante a decimal?

StackOverflow https://stackoverflow.com/questions/2406215

  •  18-09-2019
  •  | 
  •  

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
¿Fue útil?

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top