IEEE754-2008

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 24 de agosto de 2019; las comprobaciones requieren 22 ediciones .

IEEE 754 ( IEC 60559) es un estándar IEEE ampliamente utilizado que describe un formato para representar números de punto flotante . Se utiliza en implementaciones de software ( compiladores de diferentes lenguajes de programación ) y hardware ( CPU y FPU ) de operaciones aritméticas (operaciones matemáticas).

La norma describe:

El estándar de 2008 reemplaza a IEEE 754-1985 . El nuevo estándar incluye formatos binarios del estándar anterior y tres nuevos formatos. Según el estándar actual, una implementación debe soportar al menos uno de los formatos básicos, así como el formato aritmético y el formato de intercambio.

Lista de normas:

Desarrollo de la norma

La versión actual de IEEE 754-2008 se publicó en 2008. Complementa y reemplaza la versión anterior de IEEE 754-1985 , escrita por Dan Zuras y editada por Mike Coulishaw..

El estándar internacional ISO/IEC/IEEE 60559:2011 (con idéntico IEEE 754-2008) ha sido aprobado y publicado para JTC1 /SC 25 bajo el acuerdo ISO/IEEE PSDO.

Los formatos binarios del estándar original se incluyen en el nuevo estándar junto con tres nuevos formatos base (uno binario y dos decimales). Para cumplir con el estándar actual, una implementación debe implementar al menos uno de los formatos básicos.

A partir de septiembre de 2015, la norma se está revisando para incluir aclaraciones.

Formato

El formato IEEE 754 es "un conjunto de representaciones de valores numéricos y caracteres". El formato también puede incluir un método de codificación.

El formato incluye:

Los posibles valores finales que se pueden representar en el formato vienen determinados por la base , el número de caracteres en la mantisa (con precisión ) y el valor máximo :

Por lo tanto (para el ejemplo anterior), el número positivo distinto de cero más pequeño que se puede representar es , y el más grande es ( ), así como el rango completo de números desde hasta . Los números y ( y ) son los números normales más pequeños (en valor absoluto); los números distintos de cero entre estos números más pequeños se denominan subnormales .

Representación y codificación en memoria

Algunos números pueden tener múltiples representaciones en el formato en el que se acaban de describir. Por ejemplo, si y , entonces el número se puede representar como : o .

Para formatos decimales, cualquier representación es válida, y la colección de estas representaciones se llama cohortes . Cuando un resultado puede tener múltiples representaciones, el estándar determina cuál selecciona un miembro de la cohorte.

Para formatos binarios, la representación se hace única eligiendo el exponente representable más pequeño. Para números con un exponente en el rango normal (no todos o todos ceros), el bit inicial de la mantisa siempre será 1. Por lo tanto, el bit 1 inicial puede estar implícito en lugar de almacenarse explícitamente en la memoria. Esta regla se denomina convención de bit inicial o convención de bit oculto. La regla le permite guardar 1 bit de memoria para tener un bit más de precisión. El bit inicial de la convención no se usa para números subnormales; su tasa está fuera del rango normal de valores.

Formatos básicos e intercambiables

El estándar define cinco formatos básicos, que se nombran por su base numérica y la cantidad de bits utilizados en su codificación. Hay tres formatos básicos de punto flotante binario (codificados con 32, 64 o 128 bits) y dos formatos de punto flotante decimal (codificados con 64 o 128 bits). Los formatos binary32 y binary64 son los formatos simple y binario IEEE 754-1985. Una implementación conforme debe implementar completamente al menos uno de los formatos básicos.

El estándar también define formatos de intercambio que generalizan estos formatos básicos. Los binarios requieren un acuerdo con los bits principales. La tabla enumera los formatos de intercambio más pequeños (incluidos los básicos).

Nombre Título completo Base Número de dígitos binarios de la mantisa Número de lugares decimales Exponente (bit)
Emáx decimal
Compensación exponencial [1] emín Emáx notas
binario16 media precisión 2 once 3.31 5 4.51 2 4 −1 = 15 −14 +15 no convencional
binario32 precisión simple 2 24 7.22 ocho 38.23 2 7 −1 = 127 −126 +127
binario64 Precisión doble 2 53 15.95 once 307.95 2 10 −1 = 1023 −1022 +1023
binario128 Precisión cuádruple 2 113 34.02 quince 4931.77 2 14 −1 = 16383 −16382 +16383
binario256 Precisión 8x 2 237 71.34 19 78913.2 2 18 −1 = 262143 −262142 +262143 no convencional
decimal32 diez 7 7 7.58 96 101 −95 +96 no convencional
decimal64 diez dieciséis dieciséis 9.58 384 398 −383 +384
decimal128 diez 34 34 13.58 6144 6176 −6143 +6144

Tenga en cuenta que en la tabla anterior, los valores mínimos son para números regulares. La representación especial de números subnormales hace posible representar números aún más pequeños (con cierta pérdida de precisión). Por ejemplo, el número de precisión doble más pequeño mayor que cero que se puede representar de esta forma es 2 − 1074 (porque 1074 = 1022 + 53 − 1).

El valor decimal es el valor  × log 10 base , que da la precisión aproximada en decimal.

Decimal E max es emax  × log 10 base, esto da la potencia máxima en decimal.

Como se indicó anteriormente, los formatos binary32 y binary64 son idénticos a los formatos IEEE 754-1985 y son los dos formatos más comunes que se usan en la actualidad. La figura de la derecha muestra la precisión absoluta para los formatos binary32 y binary64, que van de 10 −12 a 10 12 . Tal indicador puede usarse para seleccionar el formato apropiado, dado el valor esperado del número y la precisión requerida.

Formatos de precisión extendidos y extensibles

El estándar también define formatos de precisión extendidos y extensibles que se recomiendan para una mayor precisión que los formatos básicos. El formato de precisión extendida extiende el formato básico utilizando una mayor precisión y un rango de exponente más amplio. El formato de precisión avanzada permite al usuario especificar un rango de precisión y exponente. Una implementación puede usar cualquier representación interna que elija para dichos formatos. Todo lo que necesita ser especificado son los parámetros b, p y emax. Estos parámetros describen de forma única el conjunto de números finitos (combinaciones de signo y exponente para una base dada) que puede representar.

El estándar no requiere una implementación para admitir formatos precisos extendidos o extensibles.

El estándar recomienda que los idiomas proporcionen un método para especificar los valores de p y emax para cada base b admitida.

El estándar recomienda que los lenguajes y las implementaciones admitan un formato extendido que tenga mayor precisión que el formato base más grande admitido para cada base b.

Para un formato extendido con precisión entre dos formatos base, el rango del exponente debe ser tan grande como el siguiente formato base más amplio. Entonces, por ejemplo, un número binario de precisión extendida de 64 bits debe tener un valor emax de al menos 16383.

Formatos de intercambio

Los formatos de intercambio están diseñados para intercambiar datos de punto flotante utilizando una cadena de bits de longitud fija.

Para el intercambio de números binarios de punto flotante, se definen formatos de intercambio de longitud 16 bits, 32 bits, 64 bits y cualquier múltiplo de 32 bits ≥128. El formato de 16 bits está destinado al intercambio o almacenamiento de números pequeños (por ejemplo, para gráficos o cálculos de redes neuronales).

El esquema de codificación para estos formatos de intercambio binario es el mismo que para IEEE 754-1985: un bit de signo seguido de índices que describen el desplazamiento del exponente y bits p-1 que describen el valor. El ancho de campo del exponente para el formato de k bits se calcula como w  = round(4 log 2 ( k ))−13. Los formatos de 64 y 128 bits existentes siguen esta regla, pero los formatos de 16 y 32 bits tienen más bits de potencia (5 y 8 bits respectivamente) que los que da esta fórmula (3 y 7 bits respectivamente).

Al igual que con IEEE 754-1985, existe cierta flexibilidad en la codificación NaN.

Para el intercambio de números de coma flotante decimal, los formatos de intercambio se definen para cualquier múltiplo de 32 bits.

Reglas de redondeo

El estándar define cinco reglas de redondeo. Las primeras dos reglas redondean al valor más cercano, las otras se llaman rondas direccionales.

Redondeo al más cercano

Redondeo direccional

Ejemplo de redondeo a enteros
Modo / Ejemplo +11.5 +12.5 −11,5 −12,5
al más cercano (vinculante al par) +12.0 +12.0 −12,0 −12,0
al más cercano (ajustar al infinito) +12.0 +13.0 −12,0 −13,0
a 0 +11.0 +12.0 −11,0 −12,0
a + ∞ +12.0 +13.0 −11,0 −12,0
a - ∞ +11.0 +12.0 −12,0 −13,0

Operaciones necesarias

Las operaciones requeridas para un formato aritmético admitido (incluidos los formatos base) incluyen:

Predicado general

El estándar proporciona un predicado totalOrder que define el orden total de todos los números de punto flotante para cada formato. El predicado es consistente con las operaciones de comparación usuales. Sin embargo, las operaciones de comparación normales tratan los NaN como desordenados y comparan -0 y +0 como iguales. El predicado totalOrder ordenará estos casos y también distinguirá entre diferentes representaciones de NaN para el mismo número de punto flotante codificado de diferentes maneras.

Véase también

Notas

  1. Cowlishaw, Mike Codificaciones aritméticas decimales . IBM. Consultado el 6 de agosto de 2015. Archivado desde el original el 8 de febrero de 2016.

Enlaces