3 votos

Los límites superior e inferior de la norma IEEE-754

Así que hay algo que no puedo entender sobre ieee-754.

Las preguntas concretas son:

¿Qué rango de números puede representarse mediante la norma IEEE-754 utilizando base 2 en precisión simple (doble)?

¿Qué rango de números puede representarse mediante la norma IEEE-754 utilizando base 10 en precisión simple (doble)?

¿Qué rango de números puede representarse mediante la norma IEEE-754 utilizando base 16 en precisión simple (doble)?

(El libro de texto no está en inglés, así que puede que no lo haya traducido bien, pero espero que lo entiendas).

La única información que se da en el libro de texto son los propios rangos sin la explicación real de cómo se calcularon. Por ejemplo:

binario32:

El mayor número normalizado: $(1-2^{-24})\times 2^{128}$

El número normalizado más pequeño: $1.0\times 2^{-126}$

El número subnormal más pequeño: $1.0\times 2^{-149}$

Tengo un examen próximamente en el que aparecerán este tipo de preguntas y la verdad es que no me apetece aprenderme todo esto de memoria. Por otro lado, debe haber un método para calcular estos valores, pero parecen tan aleatorios y eso es lo que me confunde.

2voto

user8734617 Puntos 11

El exponente para el estándar IEEE-754 de precisión simple está en el rango $-126$ ... $127$ . La mantisa es de la forma $1.xxxxxxxxxxxxxxxxxxxxxxx_2$ (23 dígitos binarios ( $x$ '), cada $x$ es $0$ o $1$ ) para números normalizados, y de la forma $0.xxxxxxxxxxxxxxxxxxxxxxx_2$ para los números subnormales (que siempre supone que el exponente es $-126$ ). Por lo tanto:

  • El número mayor toma la mantisa mayor y el exponente mayor: $1.11111111111111111111111_2\times 2^{127}=(2-2^{-23})\times 2^{127}=(1-2^{-24})\times 2^{128}$
  • El número normalizado más pequeño toma la mantisa normalizada más pequeña y el exponente más pequeño: $1.00000000000000000000000_2\times 2^{-126}=1.0\times 2^{-126}$
  • El número subnormal más pequeño toma la mantisa subnormal más pequeña y el exponente (más pequeño) $-126$ : $0.00000000000000000000001_2\times 2^{-126}=2^{-23}\times2^{-126}=1.0\times 2^{-149}$

He utilizado el índice $_2$ para denotar un número escrito en binario (base $2$ ); todos los demás números se escriben en base $10$ .

0voto

Kimberly Puntos 1

La respuesta existente es válida para base 2 de precisión simple (es decir, binary32), y se puede ampliar fácilmente a binary64 (basta con añadir más bits).

Sin embargo, existe el formato IEEE754 para coma flotante decimal, que codifica los números de forma algo diferente, y utiliza Binary Integer Decimal (BID) o Densely Packed Decimal (DPD) para la codificación binaria de números decimales.

Independientemente de la codificación, decimal puede almacenar 7 dígitos decimales en el coeficiente y valores [-95, 96] en el exponente, si el coeficiente se interpreta como $d_1.d_2d_3d_4d_5d_6d_7$ . Esto significa que el menor número representable es $0.000001^{-95} = 1^{-101}$ y el mayor $9.999999^{96} = 9999999^{90}$ . Esto incluye los números subnormales $-$ como los números no están normalizados en su representación decimal, el exponente 0 se trata igual que cualquier otro.

decimal64 amplía el espacio a 16 dígitos para el coeficiente y el exponente en el intervalo [-383, 384], y decimal128 34 dígitos en coeficiente y exponente en rango [-6143, 6144].

IEEE754-2008 no define ningún formato para el almacenamiento hexadecimal de números de coma flotante.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X