El estándar de la IEEE para aritmética en coma flotante (IEEE 754)
es el estándar más extendido para las computaciones en coma
flotante, y es seguido por muchas de las
mejoras de CPU y FPU.
El estándar define formatos para la representación de números
en coma flotante (incluyendo el cero) y valores des
normalizados, así como valores especiales como infinito y NaN,
con un conjunto de operaciones en coma flotante
que trabaja sobre estos valores. También especifica cuatro modos de redondeo y
cinco excepciones (incluyendo cuándo ocurren dichas excepciones y qué sucede en
esos momentos).
IEEE 754 especifica cuatro formatos
para la representación de valores en coma flotante: precisión simple (32 bits),
precisión doble (64 bits), precisión simple extendida (≥ 43 bits, no usada
normalmente) y precisión doble extendida (≥ 79 bits, usualmente implementada
con 80 bits). Sólo los valores de 32 bits son requeridos por el estándar, los
otros son opcionales. Muchos lenguajes especifican qué formatos y aritmética de
la IEEE implementan, a pesar de que a veces son opcionales. Por ejemplo, el lenguaje de programación C, ahora permite pero no requiere la aritmética de la IEEE (el
tipo de C float es típicamente usado para la precisión simple de la IEEE y el
tipo double usa la precisión doble del la IEEE).
El título completo del estándar es IEEE Standard for Binary Floating-Point
Arithmetic (ANSI/IEEE Std 754-1985), y también es conocido por IEC 60559:1989, Binary floating-point
arithmetic for microprocessor systems (originalmente el número de
referencia era IEC 559:1989)
Precisión simple 32-bits
Un número en coma flotante de
precisión simple se almacena en una palabra de 32 bits.
1 8 23 <-- tamaño en bits
+-+--------+-----------------------+
|S| Exp
| Significante |
+-+--------+-----------------------+
31 30 23 22 0 <-- índice del bit (0 a la derecha)
Desplazado +127
Donde S es el bit de signo y Exp es
el campo exponente. (Para el signo: 0=Positivo; 1= Negativo).
El exponente es desplazado en el un
número en precisión simple, un exponente en el rango −126 a +127 es desplazado
mediante la suma de 127 para obtener un valor en el rango 1 a 254 (0 y 255
tienen valores especiales descritos más adelante). Cuando se interpreta el
valor en coma flotante, el número es desplazado de nuevo para obtener el
exponente real.
El conjunto de valores posibles
pueden ser divididos en los siguientes:
- ceros
- números normalizados
- números des normalizados
- infinitos
- NaN (¬E, no es un número, como por ejemplo, la raíz
cuadrada de un número negativo)
Las clases se distinguen
principalmente por el valor del campo Exp, siendo modificada ésta por el campo
fracción. Considera Exp y Fracción como campos de números binarios sin signo
(Exp se encuentra en el rango 0–255):
Clase
|
Exp
|
Fracción
|
Ceros
|
0
|
0
|
Números des normalizados
|
0
|
distinto de 0
|
Números normalizados
|
1-254
|
cualquiera
|
Infinitos
|
255
|
0
|
NaN (Not a Number)
|
255
|
distinto de 0
|
Para números normalizados, los más comunes, Exp es el exponente desplazado y Fracción es la parte fraccional del significante (o significando). El número tiene valor v:
v = s × 2e × m
Donde
s = +1 (números positivos) cuando S
es 0
s = −1 (números negativos) cuando S
es 1
e = Exp − 127 (en otras palabras, al
exponente se le suma 127 y se almacena, a esto también se le llama "biased
with 127" en inglés)
m = 1, Fracción en binario (esto es, el significando es el número binario 1 seguido por la coma decimal seguido por los bits de Fracción). Por lo tanto, 1 ≤ m < 2.
Notas:
1.Los números des normalizados son
iguales excepto que e = −126 y m = 0,
Fracción. (e NO es -127 : el significando ha de ser desplazado a la
derecha por un bit más, de forma que incluya el bit principal, que no siempre
es 1 en este caso. Esto se balancea incrementando el exponente a -126 para el
cálculo.)
2.−126 es el menor exponente para un
número des normalizado
3.Hay dos ceros. +0 (S es 0) y −0 (S
es 1)
4.Hay dos infinitos +∞ (S es 0) y −∞
(S es 1)
5.Los NaN s pueden tener un signo y un
significando, pero estos no tienen otro significado que el que puedan aportar
en pruebas de diagnóstico; el primer bit del significando es a menudo utilizado
para distinguir NaN s señalizados
de NaN s silenciosos
6.los NaNs y los infinitos tienen
todos los bits a 1 en el campo Exp.
No hay comentarios:
Publicar un comentario