¿Cómo se convierte a partir de un número decimal a formato IEEE de punto flotante de precisión simple 754?

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

  •  18-09-2019
  •  | 
  •  

Pregunta

¿Cómo hago para cambiar manualmente sobre un número decimal (base 10) en formato de punto flotante 754 con precisión simple IEEE? Entiendo que hay tres partes a la misma, un signo, un exponente y una mantisa. Simplemente no lo entiendo completamente lo que las dos últimas partes representan en realidad.

¿Fue útil?

Solución

Para la mayor potencia de 2, que es más pequeño que su número, por ejemplo, si usted comienza con x = 10,0 continuación, 2 3 = 8, por lo que el exponente es 3. El exponente está sesgada por 127 por lo esto significa que el exponente se representa como 127 + 3 = 130. la mantisa es entonces 10,0 / 8 = 1,25. El 1 es implícita, así que sólo necesidad de representar 0.25, que es 010 0000 0000 0000 0000 0000 cuando se expresa como una cantidad fraccional sin signo de 23 bits. El bit de signo es 0 para positivo. Así tenemos:

s | exp [130]  | mantissa [(1).25]            |

0 | 100 0001 0 | 010 0000 0000 0000 0000 0000 |

0x41200000

Puede probar la representación con un programa simple en C, por ejemplo.

#include <stdio.h>

typedef union
{
    int i;
    float f;
} U;

int main(void)
{
    U u;

    u.f = 10.0;

    printf("%g = %#x\n", u.f, u.i);

    return 0;
}

Otros consejos

Tome un número 172.625.This número es el formato Base10.

Convertir este formato está en formato Base2 Para ello, primero convertir a 172 en formato binario

128 64 32 16 8 4 2 1
 1  0  1  0  1 1 0 0
172=10101100

Convertir a 0.625 en formato binario

0.625*2=1.250   1
0.250*2=.50     0
0.50*2=1.0      1
0.625=101

formato binario de 172.625 = 10,101,100.101. Esto está en formato Base2 10101100 * 2

El cambio de este número binario

1.0101100*2 **7      Normalized
1.0101100 is mantissa
2 **7 is exponent

añadir exponente 127 7 + 127 = 134

134 en convertir a formato binario

134=10000110

El número es positivo tan signo del número 0

0 |10000110 |01011001010000000000000

Explicación: El alto orden de bits es el signo del número. número se almacena en un formato de señal de magnitud. El exponente se almacena en formato de campo de 8 bits sesgada por 127 al exponente El dígito a la derecha del punto binario almacenado en el orden inferior de 23 bits. NOTA --- Este formato es IEEE formato de coma flotante de 32 bits

scroll top