Conversión decimal de un número hexadecimal de 32 bits

0

Estoy trabajando en esta pregunta:

Considere un número hexadecimal de 32 bits almacenado en la memoria como 1B08C22B. Si el número es un valor de punto flotante de precisión simple IEEE, determine el decimal equivalente al número (puede dejar su respuesta en forma de notación científica, como un número multiplicado por una potencia de dos).

Y he logrado obtener la siguiente respuesta, ¿es correcto?

    
pregunta user3472448

2 respuestas

6

Primero conviértelo a binario:

0001 1011 0000 1000 1100 0010 0010 1011

Luego asignalo a sus campos:

0 00110110 00010001100001000101011
S exponent -------mantissa--------

\ $ S = 0 \ $ por lo que el valor es positivo.

El exponente se almacena en una notación de exceso de 127, lo que simplemente significa que querían que las magnitudes negativas se clasifiquen más pequeñas que las positivas cuando la rutina de clasificación trata todo el valor como sin signo. Para solucionarlo, trate el exponente como un valor binario sin signo, conviértalo en decimal y luego reste 127. Esto significa que tiene un exponente de -73, si hice mi conversión mental correctamente. Entonces el poder es \ $ 2 ^ {- 73} \ $.

La mantisa utiliza un formato de bit oculto si no está normalizado (y no lo está). Por lo tanto, es necesario que el prefijo "1". a la mantisa, para hacer 1.00010001100001000101011 como el valor final. (Habían eliminado ese prefijo antes de empaquetar el número en el formato, por lo que debe volver a agregar el prefijo).

Esto significa que su número es \ $ 1.00010001100001000101011 \ cdot 2 ^ {- 73} \ $. Eso es igual a \ $ 2 ^ {- 73} +2 ^ {- 77} +2 ^ {- 81} +2 ^ {- 82} +2 ^ {- 87} +2 ^ {- 91} +2 ^ {- 93 } +2 ^ {- 95} +2 ^ {- 96} \ $ o aproximadamente \ $ + 1.13123954 \ veces 10 ^ {- 22} \ $ en decimal.

    
respondido por el jonk
2

No es correcto. Está tratando este valor como un entero sin signo.

Creo que el formato de punto flotante de precisión simple de 32 bits utiliza el bit 31 como bit de signo, los bits 30-23 como exponente binario de compensación y los bits 22-0 como valor fraccionario.

En su caso, el bit de signo indica un valor negativo. Debe revisar este formato y volver a calcular.

    
respondido por el Paul Elliott

Lea otras preguntas en las etiquetas