ⓘ IEEE coma flotante. El estándar del IEEE para aritmética en coma flotante es la norma o estándar técnico para computación en coma flotante, establecida en 1985 ..

                                     

ⓘ IEEE coma flotante

El estándar del IEEE para aritmética en coma flotante es la norma o estándar técnico para computación en coma flotante, establecida en 1985 por el Instituto de Ingenieros Eléctricos y Electrónicos. La norma abordó muchos problemas encontrados en las diversas implementaciones de coma flotante que las hacían difíciles de usar de forma fiable y portátil. Muchas unidades de coma flotante de hardware utilizan ahora el estándar IEEE 754.

El estándar define:

  • Formatos aritméticos: conjuntos de datos de coma flotante binarios y decimales, que consisten en números finitos, incluidos los ceros con signo y los números desnormalizados o subnormales, infinitos y valores especiales "no numéricos" NaN.
  • Formatos de intercambio: codificaciones cadenas de bits que se pueden utilizar para intercambiar datos de coma flotante de forma eficiente y compacta.
  • Operaciones: operaciones aritméticas y otras como funciones trigonométricas en formatos aritméticos.
  • Manejo de excepciones: indicaciones de condiciones excepcionales, tales como división por cero, desbordamiento, etc.
  • Reglas de redondeo: propiedades que deben satisfacerse al redondear los números durante las operaciones aritméticas y las conversiones.

La norma también es conocida como IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems originalmente el número de referencia era IEC 559:1989. ​

La versión actual, IEEE 754-2008 publicada en agosto de 2008, incluye casi todo el estándar IEEE 754-1985 original y el estándar IEEE para aritmética de coma flotante independiente de la base IEEE 854-1987.

                                     

1. Desarrollo del estándar

La versión actual del estándar, denominada IEEE 754-2008, publicada en agosto de 2008, se deriva de la versión anterior IEEE 754-1985 la cual seguida por un proceso de revisión de siete años, presidido por Dan Zuras y editado por el profesor de ciencias de la computación Mike Cowlishaw.

El estándar internacional ISO/IEC/IEEE 60559:2011, con contenido idéntico al IEEE 754-2008 ha sido aprobado para su adopción a través del comité técnico conjunto ISO/IEC JTC 1/SC 25 en virtud del acuerdo ISO/IEEE PSDO ​

                                     

2. Formatos

Un formato IEEE 754 es un conjunto de representaciones de valores numéricos y símbolos. Un formato también puede incluir cómo se codifica el conjunto.

Un formato comprende:

  • Números finitos, que pueden ser de base 2 binario o de base 10 decimal. Cada número finito se describe por tres enteros: s un bit de signo, c un significando, mantisa o coeficiente y q exponente. El valor numérico v {\displaystyle v} de un número finito es
v = − 1 s × c × b q {\displaystyle v=-1^{s}\times c\times b^{q}}

Donde b es la base 2 o 10. Por ejemplo, si la base es 10, el signo es 1 lo que indica signo negativo, el significando es 12345, y el exponente es -3, entonces el valor del número es: −11 × 12345 × 10−3 = −1 × 12345 ×.001 = −12.345.

  • Dos infinitos: + ∞ {\displaystyle +\infty } y − ∞ {\displaystyle -\infty }.
  • Dos tipos de valores no numéricos NaN: un NaN silencioso qNaN y un NaN de señalización sNaN. Un NaN puede llevar una carga útil que está destinada la información de diagnóstico que indica la fuente de la NaN. El signo de un NaN no tiene sentido, pero puede ser predecible en algunas circunstancias.

Los posibles valores finitos que se pueden representar en un formato están determinados por la base b {\displaystyle b}, el número de dígitos en el significando precisión p y el parámetro exponente máximo e m a x {\displaystyle e_{max}}:

  • c debe ser un número entero en el intervalo cerrado. Los números - b 1-emax y b 1-emax en este ejemplo, -1 × 10 -95 y 1 × 10 -95 son los números normales más pequeños en magnitud; los números no nulos entre estos números más pequeños se llaman números subnormales.

    Los valores ceros son valores finitos con significando 0. Estos son ceros con signo, el bit de signo específica si un cero es +0 cero positivo o -0 cero negativo.

                                     

2.1. Formatos Representación y codificación en memoria

Algunos números pueden tener varias representaciones en el modelo que acaba de ser descrito. Por ejemplo, si b = 10 y p = 7, entonces el número -12.345 puede representarse como -12345 × 10 -3, -123450 × 10 -4 y -1234500 × 10 -5. Sin embargo, para la mayoría de las operaciones, como las operaciones aritméticas, el resultado valor no depende de la representación de las entradas.

Para los formatos decimales, cualquier representación es válida, y el conjunto de estas representaciones se llama cohorte. Cuando un resultado puede tener varias representaciones, el estándar específica qué miembro de la cohorte es elegido.

Para los formatos binarios, la representación se hace única eligiendo el exponente representable más pequeño. Para los números con un exponente en el rango normal no todos unos o todos ceros, el bit inicial del significando siempre será 1. En consecuencia, el bit 1 principal puede ser implícito en lugar de estar explícitamente presente en la codificación de la memoria. Esta regla se denomina convención de bit principal, o también convención de bits implícita o convención de bits ocultos. La regla permite que el formato de memoria tenga un poco más de precisión. La convención de bit principal no se utiliza para los números subnormales ya que tienen un exponente fuera del rango del exponente normal.



                                     

3. Formatos básicos y de intercambio

El estándar IEEE 745 define cinco formatos básicos que se denominan por su base numérica y el número de bits utilizados en su codificación de intercambio. Existen tres formatos básicos binarios de coma flotante codificados con 32, 64 o 128 bits y dos formatos básicos de coma flotante decimal codificados con 64 o 128 bits. Los formatos binary32 y binary64 son los formatos simple y doble del estándar original IEEE 754-1985. Una implementación conforme debe implementar completamente al menos uno de los formatos básicos.

El estándar también define los formatos de intercambio, que generalizan estos formatos básicos. ​

Para un formato extendido con una precisión entre dos formatos básicos, el rango de exponentes debe ser tan grande como del siguiente formato básico más amplio. Por ejemplo, un número binario de 64 bits de precisión extendida debe tener un exponente máximo de al menos 16383. El formato extendido x87 de 80 bits cumple este requisito.

                                     

3.1. Formatos básicos y de intercambio Formatos de intercambio

Los formatos de intercambio están destinados al intercambio de datos de coma flotante utilizando una cadena de bits de longitud fija para un formato dado. Para el intercambio de números de coma flotante binaria, se definen formatos de intercambio de longitudes de 16 bits, 32 bits, 64 bits y cualquier múltiplo de 32 bits mayor o igual a 128. El formato de 16 bits está destinado al intercambio o almacenamiento de pequeños números por ejemplo, para gráficos.

El esquema de codificación para estos formatos de intercambio binario es el mismo que el de la norma original IEEE 754-1985: un bit de signo seguido de w bits para el exponente compensado por un sesgo y p-1 bits que describen el significando. La anchura del campo de exponentes para un formato de k bits se calcula como sigue:

w = round 4 log 2 ⁡ k) − 13 {\displaystyle w={\text{round}}4\log _{2}k)-13}

en la cual la función roundx {\displaystyle {\text{roundx}}} redondea el resultado al entero inferior próximo.

Los formatos existentes de 64 y 128 bits siguen esta regla, pero los formatos de 16 y 32 bits tienen más bits de exponentes 5 y 8 de lo que proporcionaría esta fórmula 3 y 7, respectivamente. Como ocurre con el estándar original IEEE 754-1985, hay cierta flexibilidad en la codificación de la señalización para las cadenas no numéricas o NaN.

Para el intercambio de números decimales de coma flotante, se definen formatos de cualquier múltiplo de 32 bits. El esquema de codificación para los formatos de intercambio decimal codifica de forma similar el signo, exponente y significando, pero se definen dos representaciones de nivel de bits diferentes. El intercambio es complicado por el hecho de que se requiere algún indicador externo de la representación en uso. Las dos opciones permiten que el significando sea codificado como una secuencia comprimida de dígitos decimales, usando decimales densamente empacados, o alternativamente como un entero binario. El primero es más conveniente para la implementación directa de hardware del estándar, mientras que el segundo es más adecuado para la emulación de software en un computador. En ambos casos, el conjunto de números combinaciones de signo, significando y exponente que pueden ser codificados es idéntico, y los valores especiales tienen representaciones binarias idénticas.