Sunteți pe pagina 1din 19

La Norma IEEE 754

En 1985, el IEEE (Institute of Electrical and Electronics Engineers) public la norma IEEE 754. Una especificacin relativa a la precisin y formato de los nmeros de "punto flotante". Incluye una lista de las operaciones que pueden realizarse con dichos nmeros. En realidad, la adopcin de este estndar se debe a que el hardware que los sustenta tambin lo sigue. De hecho, prcticamente el 100% de las procesadores que se fabrican siguen esta norma en lo que se refiere al tratamiento y operacin de los nmeros de "punto flotante. El proceso de estandarizacin de las operaciones de punto flotante comenz paralelamente al desarrollo por Intel (1976) de lo que seran los coprocesadores aritmticos 8087. A partir de entonces poda asegurarse que X + (Y + Z) proporcionara el mismo resultado que (X + Y) + Z con cualquier compilador y cualquier conjunto de nmeros.

Sistemas Digitales, clase N 6

La Norma IEEE 754


Con la aparicin de los coprocesadores matemticos, la realizacin de operaciones con nmeros fraccionarios se encomiendan al hardware, en vez de a rutinas software que, hasta entonces, eran especficas de cada compilador y cada plataforma. Los coprocesadores matemticos, denominados tambin FPUs (Floating-Pount Units) comenzaron siendo circuitos integrados (opcionales) que se insertaban en la placa base junto al procesador principal. Por ejemplo los 8087, 80287 y 80387 de Intel (este ltimo fue el primero que proporcion soporte completo para la versin final del Estndar). A partir del 80486, Intel incorpor el coprocesador matemtico junto con el principal, con lo que su existencia dej de ser opcional y se convirti en estndar. Estas "unidades de punto flotante" no solo realizan las operaciones aritmticas bsicas (suma resta, multiplicacin y divisin). Tambin incluyen operaciones como la raz cuadrada, redondeo, resto, y funciones trascendentes como seno, coseno, tangente, cotangente, logaritmos y exponenciacin.
Sistemas Digitales, clase N 6 2

La Norma IEEE 754


Formatos:

En lo referente a la representacin binaria de los nmeros, el Estndar utiliza tres formatos denominados de precisin simple (equivalente al float C++); doble (equivalente al double) y extendida (que podra corresponder al long double), aunque existe un cuarto, denominado de cudruple precisin, no contemplado en la norma que es tambin un estndar de facto. Los tamaos son los siguientes:
Precisin Simple Doble Extendida Cudruple Bytes 4 8 >= 10 16 bits 32 64 >= 80 128

En todos los casos se utilizan tres campos para describir el nmero: El signo S, el exponente k y la mantisa n, que se almacenan en ese orden en memoria (no en los registros del procesador).
Sistemas Digitales, clase N 6 3

La Norma IEEE 754


El signo S, se almacena como es usual en un bit (0 significa positivo, 1 negativo).

El exponente k se almacena en forma de un nmero binario con signo segn una regla que, como veremos a continuacin, depende del rango y del formato.
La mantisa n se almacena en forma normalizada, salvo cuando se representan mantisas especiales. El esquema de la distribucin utilizada para los de simple y doble precisin es el indicado.
Simple precisin: s EEEEEEEE
1 8 bits

mm mmmmmmmmmmmmmmmmmmm
23 bits

Doble precisin: s
1

EEEEEEEEEEE
11 bits

mmmmmmmmmmmmmmmmmmmmmmm..mmmmmmm
52 bits

Sistemas Digitales, clase N 6

La Norma IEEE 754


Como veremos a continuacin, la interpretacin de los patrones de bits contenidos en el exponente y en la mantisa sigue reglas algo complicadas.
Por ejemplo, se considera la existencia de valores especiales: +Infinito; -Infinito; NaN ("Not a Number") y una representacin especial para el valor cero, lo que ha obligado a definir reglas especiales de aritmtica cuando estos valores intervienen en operaciones con valores normales o entre ellos. A lo anterior se aade que existen dos tipos de representacin para los valores no especiales, cada uno con sus reglas; son las denominadas formas normalizadas y subnormales.

Sistemas Digitales, clase N 6

La Norma IEEE 754


Mantisas especiales: | Definicin del Cero: puesto que el nmero se supone almacenado en forma normalizada, no es posible representar el cero se supone siempre precedido de un 1. Por esta razn se convino la siguiente representacin del cero. Ejemplo:

0 00000000 00000000000000000000000 = +0
S exponente mantisa

1 00000000 00000000000000000000000 = -0
S exponente mantisa

Sistemas Digitales, clase N 6

La Norma IEEE 754


Mantisas especiales: Infinitos: se ha convenido que cuando todos los bits del exponente estn a 1 y todos los de la mantisa a 0, el valor es +/infinito (segn el valor S). Esta distincin ha permitido al Estndar definir procedimientos para continuar las operaciones despus que se ha alcanzado uno de estos valores (despus de un overflow). Ejemplo: 0 11111111 00000000000000000000000 = +Infinito
S exponente mantisa

1 11111111 00000000000000000000000 = -Infinito


S exponente mantisa

Sistemas Digitales, clase N 6

La Norma IEEE 754


Valores no-normalizados (denominados tambin "subnormales"). | En estos casos no se asume que haya que aadir un 1 la mantisa para obtener su valor. Se identifican porque todos los bits del exponente son 0 pero la mantisa presenta un valor distinto de cero (en caso contrario se tratara de un cero). Ejemplo: 1 00000000 00100010001001010101010
signo exponente mantisa

Sistemas Digitales, clase N 6

La Norma IEEE 754


Valores no-numricos:Denominados NaN ("Not-a-number"). Se identifican por un exponente con todos sus valores a 1, y una mantisa distinta de cero. Existen dos tipos QNaN ("Quiet NaN") y SNaN ("Signalling NaN"), que se distinguen dependiendo del valor 0/1 del bit ms significativo de la mantisa. QNaN tiene el primer bit a 1, y significa "Indeterminado", SNaN tiene el primer bit a 0 y significa "Operacin no-vlida". Ejemplo: 0 11111111 10000100000000000000000 = QNaN
signo exponente mantisa

1 11111111 00100010001001010101010 = SNaN


signo exponente mantisa

Sistemas Digitales, clase N 6

La Norma IEEE 754


Significados normales

La representacin de nmeros no incluidos en los casos especiales (distintos de cero que no sean infinitos ni valores nonumricos), sigue reglas distintas segn la precisin y el tipo de representacin (normal o subnormal). Para calcular el valor V de un nmero binario IEEE 754 de exponente E y mantisa M, debe recordarse que esta ltima representa una fraccin binaria en notacin normalizada . Es decir, hay que sumarle una unidad. En estas condiciones, si por ejemplo, el contenido de la mantisa es M=0.254 se supone que el valor de la mantisa es 1 + 0.254. Por su parte el clculo de la fraccin binaria es anlogo al de la fraccin decimal. Recordemos que la fraccin decimal 1304 (0.1304) equivale a :
1101 3 102 0 103 4 104

Del mismo modo, la fraccin binaria 1101 (0.1101) equivale a:


Sistemas Digitales, : clase N 6

(1 2 1 1 2 2 0 2 3 1 2 4 )10 0,8125 10

10

La Norma IEEE 754


Teniendo en cuenta estas observaciones, el valor decimal V de una representacin binaria estndar, puede calcularse mediante las siguientes frmulas
Simple precisin, representacin normalizada:

V (1 M ) 2 E 127
0 < E < 255, luego E se mueve en el intervalo 1 a 254 (ambos inclusive) Al restarle 127 queda un rango entre 2 126 y 2127 Ejemplo N1: 0 00001100 11010000000000000000000 E =12;

Signo = (+)

M (1 2 1 1 2 2 0 2 3 1 2 4 0 0... 0) 2 (0.8125 )10


V (1 0.8125 ) 212127 1.8125 2 115 4.3634350 10 35
Sistemas Digitales, clase N 6 11

La Norma IEEE 754


Simple precisin, representacin normalizada:

V (1 M ) 2 E 127
Ejemplo N2: 1 10001101 01101000000000000000000 Signo =( - ) E = 141;

M (0 2 1 1 2 2 1 2 3 0 2 4 1 2 5 0... 0) 2 (0.40625 )10

V (1 0.40625 ) 2141127 (1.40625 ) 214 23040

Sistemas Digitales, clase N 6

12

La Norma IEEE 754


Simple precisin, representacin subnormal:

V (0 M ) 2 127
Como se ha sealado , en estos casos es E = 0, y M es distinto de cero. La operatoria es anloga al caso anterior. Ejemplo: 0 00000000 11010000000000000000000

M 1 2 1 2 0 23 1 24 0 25 0.. 0 (0.8125)10 V 0.8125 2127 4.775445801039


Sistemas Digitales, clase N 6 13

Signo = ( + )
1

E = 0;

La Norma IEEE 754


Doble precisin, representacin normalizada:

V (1 M ) 2 E 1023
0 < E < 2047, luego E se mueve en el intervalo 1 a 2046 (ambos inclusive) Simple precisin, representacin subnormal:

V (0 M ) 2 1023
Como se ha sealado , en estos casos es E = 0, y M es distinto de cero. La operatoria es anloga al caso anterior.
Sistemas Digitales, clase N 6 14

La Norma IEEE 754


En resumen bajo la Norma IEEE -754 tenemos representacin: Signo explcito Representacin del exponente en exceso Mantisa normalizada con un 1 implcito (1.M) En el registro la distribucin es la siguiente:
signo exponente mantisa

dependiendo de la precisin usada se tiene: signo exponente Simple (32 bits) 1 8 Doble (64 bits) 1 11 Cudruple(128 bits) 1 15

mantisa 23 52 112

Sistemas Digitales, clase N 6

15

La Norma IEEE 754


Rango de la representacin IEEE 754
En la prctica solo se consideran las representaciones normales, de forma que la forma normal ms pequea corresponde a la siguiente representacin binaria: 1 00000001 00000000000000000000001 Signo = ( - ) E=1

M 1 223 Vmin (1 223 ) 21127 (1 223 ) 2126 (1.17549449)10 1038


Es significativo que el prximo valor en escala ascendente es: 1 00000001 00000000000000000000010 Signo = ( - ) E=1

M 1 2 22

Sistemas Digitales, clase N 6

V (1 2 22 ) 2 126

16

La Norma IEEE 754


Rango de la representacin IEEE 754(continuacin)
22 23 7 I V V 2 2 1 . 192092 10 m in m in La diferencia entre ambos es:

lo que representa algo ms de una parte en 10 millones. Esta ser la mejor precisin que podr alcanzarse en los procesos con nmeros de coma flotante de simple precisin. El valor mximo en la representacin normal, corresponde a la forma binaria: 0 11111110 11111111111111111111111 Signo = ( + ) E = 254

M 1 21 1 22 1 22 .... 1 223 0.9999999999 Vmax (1 0.9999999) 2254127 (1.99999999) 2127 3.402823461038


Sistemas Digitales, clase N 6 17

Ejercicios
1. cul es el valor decimal de : 1 01111100 11000000000000000000000? Bit del signo: 1= nmero negativo Exponente= 01111100=124 Mantisa=0,11000000000000000000000= 0.75 El valor es:

V (1 M ) 2

E 127

(1) (1 0.75 ) 2124127 1.75 2 3 0.21875

Sistemas Digitales, clase N 6

18

Ejercicios
2. cul es la representacin en simple precisin de: 347.625? Convertir el nmero a binario: 347.625= 101011011.101 en base 2 Normalizar el nmero (mover el punto decimal hasta que haya un solo 1 a la izquierda. 101011011.101=1.01011011101x 28 Mantisa = 01011011101 Exponente: 8 en exceso 127=8+127 = 135 = 10000111 Signo = 0, el nmero es positivo Resultado: el registro contiene la siguiente informacin:

0 1000011101011011101000000000000
Sistemas Digitales, clase N 6 19

S-ar putea să vă placă și