Sei sulla pagina 1di 28

UniversisdaddeLosAndes

FacultaddeIngeniera
EscueladeSistemas
Aritmtica
Punto Flotante
Basada en: What Every Computer Scientist Should Know
About Floating-Point Arithmetic
Por: David Goldberg

Prof. Gilberto Daz


gilberto@ula.ve
Departamento de Computacin, Escuela de Sistemas, Facultad de Ingeniera
Universidad de Los Andes, Mrida 5101 Venezuela
Programacin Paralela y Distribuida

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

Gestin de Nmeros Reales


Representacin: se utiliza la notacin punto
flotante
(mantisa/base/exponente)

Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz

Gestin de Nmeros Reales


Operaciones: indica como se deben
manipular los nmeros. Operaciones para
Aritmtica: +, -, *, /, %, etc.
Comparacin: <, >, ==, >=, <=
Conversin entre distintos formatos:
Float Double
Float Integer, etc.
Manejo de excepciones: Qu hacer en
caso de?
NmeroMsGrande * 2
Conversin binario/decimal (I/O)

Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz

Gestin de Nmeros Reales


Lenguaje/Bibliotecas: debe existir soporte
para todas las operaciones anteriores para
todas las operaciones anteriores

Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz

Formato de Punto Flotante


El formato de la notacin punto flotante es una
especie de notacin cientfica:
mantisa*2exponente
Podemos utilizar 3 campos binarios para la
representacin: signo (S), exponente (E) y
fraccin (F)

Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz

Formato de Punto Flotante


El signo se hace con la siguiente lgica:
0 para representar un nmero positivo
1 para representar un nmero negativo

Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz

Formato de Punto Flotante


El exponente es desplazado:
Se le suma 127 en precisin simple o
Se le suma 1023 en precisin doble

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

Formato de Punto Flotante


La fraccin tiene un nmero uno (1) implcito
a la izquierda, ejemplo:
Si el campo es 01101 la mantisa real ser
1.01101
S

Se utiliza una notacin cientfica normalizada


para escribir un nmero punto flotante
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz

De Punto Flotante a Decimal


Para convertir un nmero de notacin punto
flotante a notacin decimal utilizamos la
siguiente relacin
(1 2S) * (1 + F) * 2E-Desplazamiento

Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz

De Punto Flotante a Decimal


Ejemplo: convertir a decimal el siguiente punto
flotante:
1

01111100 11000000000000000000000
(1 2S) * (1 + F) * 2E-Desplazamiento

S=1
E = 01111100 = 124
F = 110000.... = 0.75

(1-2*1) * (1+0.75) * 2124127 = (-1.75*23) =


-0.21875
Depto Computacin Escuela de Sistemas Universidad de Los Andes Mrida Venezuela - Gilberto Diaz

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

Potrebbero piacerti anche