Documente Academic
Documente Profesional
Documente Cultură
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.
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
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
0 00000000 00000000000000000000000 = +0
S exponente mantisa
1 00000000 00000000000000000000000 = -0
S exponente mantisa
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
(1 2 1 1 2 2 0 2 3 1 2 4 )10 0,8125 10
10
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 = (+)
V (1 M ) 2 E 127
Ejemplo N2: 1 10001101 01101000000000000000000 Signo =( - ) E = 141;
12
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
Signo = ( + )
1
E = 0;
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
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
15
M 1 2 22
V (1 2 22 ) 2 126
16
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
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
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