Sie sind auf Seite 1von 19

Sistemas Digitales,

clase N 6
1
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
2
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
3
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 Bytes bits
Simple 4 32
Doble 8 64
Extendida >= 10 >= 80
Cudruple 16 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
4
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:

1 8 bits 23 bits

Doble precisin:



1 11 bits 52 bits





mm mmmmmmmmmmmmmmmmmmm EEEEEEEE s
mmmmmmmmmmmmmmmmmmmmmmm..mmmmmmm EEEEEEEEEEE s
Sistemas Digitales,
clase N 6
5
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
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
7
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
8
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
9
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


1 11111111 00100010001001010101010 = SNaN
signo exponente mantisa

signo exponente mantisa

Sistemas Digitales,
clase N 6
10
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 no-
numricos), 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 :


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

:
4 3 2 1
10 4 10 0 10 3 10 1


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

Sistemas Digitales,
clase N 6
11
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:



0 < E < 255, luego E se mueve en el intervalo 1 a 254 (ambos
inclusive) Al restarle 127 queda un rango entre

Ejemplo N1: 0 00001100 11010000000000000000000

Signo = (+) E =12;




127
2 ) 1 (


E
M V
10 2
4 3 2 1
) 8125 . 0 ( ) 0 ... 0 0 2 1 2 0 2 1 2 1 (

M
35 115 127 12
10 3634350 . 4 2 8125 . 1 2 ) 8125 . 0 1 (

V
127 126
2 2 y

Sistemas Digitales,
clase N 6
12
La Norma IEEE 754

Simple precisin, representacin normalizada:



Ejemplo N2:
1 10001101 01101000000000000000000
Signo =( - ) E = 141;


127
2 ) 1 (


E
M V
10 2
5 4 3 2 1
) 40625 . 0 ( ) 0 ... 0 2 1 2 0 2 1 2 1 2 0 (

M
23040 2 ) 40625 . 1 ( 2 ) 40625 . 0 1 (
14 127 141


V
Sistemas Digitales,
clase N 6
13
La Norma IEEE 754
Simple precisin, representacin subnormal:



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 = ( + ) E = 0;

127
2 ) 0 (

M V
39 127
10
5 4 3 2 1
10 77544580 . 4 2 8125 . 0
) 8125 . 0 ( 0 .. 0 2 0 2 1 2 0 2 1 2 1




V
M
Sistemas Digitales,
clase N 6
14
La Norma IEEE 754
Doble precisin, representacin normalizada:



0 < E < 2047, luego E se mueve en el intervalo 1 a 2046 (ambos
inclusive)

Simple precisin, representacin subnormal:



Como se ha sealado , en estos casos es E = 0, y M es distinto de
cero. La operatoria es anloga al caso anterior.



1023
2 ) 1 (


E
M V
1023
2 ) 0 (

M V
Sistemas Digitales,
clase N 6
15
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:



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

signo exponente mantisa
Sistemas Digitales,
clase N 6
16
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



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



38
10
126 23 127 1 23
min
23
10 ) 17549449 . 1 ( 2 ) 2 1 ( 2 ) 2 1 (
2 1



V
M
126 22
22
2 ) 2 1 (
2 1



V
M
Sistemas Digitales,
clase N 6
17
La Norma IEEE 754
Rango de la representacin IEEE 754(continuacin)

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

38 127 127 254
max
23 2 2 1
10 40282346 . 3 2 ) 99999999 . 1 ( 2 ) 9999999 . 0 1 (
9999999999 . 0 2 1 .... 2 1 2 1 2 1


V
M
7 23 22
min min
10 192092 . 1 2 2

V V I
Sistemas Digitales,
clase N 6
18
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:



21875 . 0 2 75 . 1 2 ) 75 . 0 1 ( ) 1 (
3 127 124


127
2 ) 1 (


E
M V
Sistemas Digitales,
clase N 6
19
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 2
8

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

Das könnte Ihnen auch gefallen