Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
FacultaddeIngeniera
EscueladeSistemas
Aritmtica
Punto Flotante
Basada en: What Every Computer Scientist Should Know
About Floating-Point Arithmetic
Por: David Goldberg
Motivacin
Los programas que desarrollamos estn bien
hechos?
Son correctos los resultados que
obtenemos?
Estamos haciendo cosas peligrosas?
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Casi todos los lenguajes de programacin
proporcionan el tipo de dato punto flotante
Desde los PCs hasta los supercomputadores
tienen aceleradores de operaciones punto
flotantes
Muchos compiladores son ejecutados para
procesar algoritmos punto flotantes y
Virtualmente todo sistema operativo debe
responder a excepciones punto flotantes
(overflows)
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Problema de la Representacin
Existen infinitos nmeros enteros
Sin embargo, en la mayora de los problemas
la representacin de los datos y resultados es
suficiente utilizar 32 bits.
N = {1, 2, 3, 4, 5, ........... }
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Problema de la Representacin
Tambin existen infinitos nmeros reales
Pero su representacin es ms compleja y se
tiene que realizar una aproximacin para
realizar esta tarea.
R = {1, ... ..... 2, ..... }
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Problema de la Representacin
Dado una cantidad finita de bits, las
operaciones con nmeros reales producen
resultados que no pueden ser representadas
en esa cantidad de bits.
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Problema de la Representacin
Por esto los resultados de operaciones con
nmeros reales deben ser redondeados para
que puedan ser representados en una cantidad
finita de bits.
El error de redondeo resultante es una
caracterstica de las operaciones con tipos de
datos punto flotante.
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Historia
En los 60s y 70s las operaciones con
nmeros reales se manejaban de forma
distinta en cada computador
Formato
Precisin
Redondeo
Gestin de excepciones
Etc.
De esta manera era muy difcil escribir
cdigo porttil
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Historia
En 1982 la IEEE defini el estndar IEEE-754
y lo implant por primera vez en los Intel
8087.
En 1985 este formato fue aceptado como el
estndar universal.
Esto asegur al menos que las mquinas
que lo utilizaban podian correr programas
que obtuvieran los mismos resultados
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Historia
Para el 2000 el estndar IEEE-754 es
implantado universalmente en todos los
computadores de propsito general.
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Representacin de Nmeros Reales
Hay varias tcnicas para representar los
nmeros reales en un computador:
Binary Coded Decimal (BDC)
Nmeros Racionales
Punto Fijo
Punto Flotante
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Binary Coded Decimal
Cada dgito es representado por 4 bits,
ejemplo:
38.57 = 0011 1000 0101 0111
Es lento
No se adecua a ninguna plataforma de
hardware
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Nmeros Racionales
Los nmeros son almacenados como nmeros
racionales, ejemplo
0.5 = 0.3333 = 1/3
Excente precisin
Se necesitan nmeros racionales muy
grandes
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Punto Fijo
Cada nmero real es representado como un
entero utilizando un nmero fijo de lugares
decimales, ejemplo
1234,56 = 123456
Reales con un nmero grande de dgitos
decimales no pueden ser representados
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Punto Flotante
Se utiliza la notacin cientfica:
mantisa/base/exponente
Un amplio nmero de valores se pueden
representar cuando se utiliza una notacin
de longitud fija.
La diferencia entre dos nmeros punto
flotante no es constante.
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Introduccin
Punto Flotante
Los nmeros punto flotante son finitos
Muchos nmeros reales se mapean en el
mismo nmero punto flotante.
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Ejemplos:
Si el exponente es 4 el campo E ser 131
(10000011)
Si el campo es 01011101 (93) el exponente
ser -34.
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
01111100 11000000000000000000000
(1 2S) * (1 + F) * 2E-Desplazamiento
S=1
E = 01111100 = 124
F = 110000.... = 0.75
Valores Especiales
Tenemos que considerar algunos valores
particulares
Clase
2 Ceros (+ y -)
No. desnormalizados
No. normalizados
2 Infinitos (+ y -)
Not a Number (NaN)
Exp
Fraccin
0
0
0
0
1-254 cualquiera
255
0
255
0
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Rangos
El nmero positivo ms pequeo (distinto de
cero) que podemos representar es
1 * 2-126
El exponente ms pequeo es 00000001 (1)
La fraccin ms pequea es
00000000000000000000000 (0)
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz
Rangos
El nmero positivo ms grande (normal)que
podemos representar es
(2 223) * 2127 = 2128 2104
El exponente ms grande es 11111110 (254)
La fraccin ms grande es
11111111111111111111111 (1 - 223)
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz