Está en la página 1de 19

1

Punto Flotante
Elaborado por Prof. Ricardo Gonzlez
A partir de Materiales de las Profesoras
Angela Di Serio
Mara Blanca Ibaez
La velocidad no lleva a ninguna parte si no se va en la
direccin correcta.
Proverbio Americano
Representacion en Punto Flotante
Adems de los enteros con y sin signo, existen problemas que
deseamos modelar en el computador que requieren de nmeros
fraccionarios, que en matemtica se le llama nmeros Reales.
3,14159265 (pi)
2,71828 .. (e)
0,000000001 o 1,0 x 10
9
(segundos en un nanosegundo)
3.155.760.000 o 3,15576 x 10
9
(segundos en un siglo)
A la notacin de la derecha de los dos ltimos nmeros se le llama
notacin cientfica. Que tiene un solo digito a la izquierda del
punto decimal.
2
Representacion en Punto Flotante
Fundamentos
Supongamos que tenemos 62 digitos para almacenar enteros y
decidimos tener:
34 dgitos a la izquierda del punto decimal.
28 dgitos a la dcrccha del punto decimal.
Ejemplos:
Masa del electron (9 x 10
-28
gr):
0000000000000000000000000000000000.0000000000000000000000000009
Masa del Sol (2 x 10
33
gr):
2000000000000000000000000000000000.0000000000000000000000000000
La cantidad de dgitos significativos es 1 y no 62!
Necesitamos un sistema en el que el intervalo de los nmeros que
puedan expresarse sea independiente del nmero de d gitos
significativos.
Representacion en Punto Flotante
Notacin Cientfica
n = f x 10
e
- f es la fraccin o mantisa
- e es un entero positivo o negativo llamado
exponente .
A la versin en una computadora de este tipo de notacin se
le denomina Punto Flotante.
Ejemplos:
3.14 = 3.14 x 10
0
0.000001 = 1.0 x 10
-6
1941 = 1.941 x 10
3
3
Representacion en Punto Flotante
Nmero en punto flotante = d
0
. d
1
d
2
d
3
.. d
k
x b
exp
Donde d
0
. d
1
d
2
d
3
.. d
k
es la mantisa, b la base y exp el exponente.
Qu se necesita para representar un nmero en punto Flotante?
n El signo del nmero
n El signo del exponente
n Dgitos para el exponente
n Dgitos para la Mantisa
Nmeros normalizados
Un nmero que no va precedido por ceros se dice que est normalizado
Normalizado No estn Normalizados
1.0 x 10
-8
0.1 x 10
-9
o 10.0 x 10
10
Un nmero punto flotante puede expresarse de diferentes formas que son
equivalentes, es necesario establecer una nica representacin por lo
que se trabaja con nmeros normalizados. Decimos que un nmero
esta normalizado si el dgito a la izquierda del punto coma est entre 0
y la base
( 0 < dgito a la izquierda del punto < b )
En particular decimos que un nmero binario est normalizado si el dgito
a la izquierda del punto es igual a 1.
4
Notacin normalizada
Por lo general los nmeros en punto flotantes
sern almacenados en notacin
normalizada, donde el punto se encuentra a
la derecha del primer dgito significativo del
nmero
Ejemplos:
3450000
10
=> 3.45 x 10
6
0.1001
2
=> 1.001 x 2
-1
Clculo de Intervalo y Precisin
( )
Intervalo de representacin
..... .....
..... .....
-k -k+1 -2 -1 0 1 2 3 k k+1 k+2
Precisin
El intervalo esta determinado por el nmero de dgitos del exponente.
La precisin esta determinada por el nmero de dgitos de la fraccin o mantisa
d
0
,d
1
d
2
d
3
.. X b
e0 e1 ...
5
Clculo de Intervalo y Precisin
Ejemplo
5 dgitos y dos signos para representar magnitudes entre:
+ 0.100 x 10
-99
y 0.999 x 10
+99
Fraccin de tres dgitos y signo dentro del intervalo:
0.1 <= | f | < 1
Exponente de dos dgito con signo:
-99 <= e <= 99
Del nmero infinito de reales en el intervalo:
[+0.100 x 10
99
, 0.999 x 10
+99
] slo se pueden expresar:
179,100 nmeros positivos
179,100 nmeros negativos
y El 0
Diferencias entre Punto Flotante y Numeros Reales
5 dgitos y dos signos para representar magnitudes entre:
+ 0.100 x 10
-99
y 0.999 x 10
+99
-10
100
-10
-100
0 10
-100
10
100
Subdesbordamiento
negativo
Subdesbordamiento
positivo
cero
Desbordamiento
positivo
Desbordamiento
negativo
Nmeros negativos expresables Nmeros positivos expresables
6
Diferencias entre Punto Flotante y Numeros Reales
Densidad
-1 0 1 2
1.1 1.2 1.3 1.4 1.5 1.6 .............. 1.9
1.5 1.6
1.51 1 .52 ...................................1.59
+ 0.100 x 10
-99
y 0.999 x 10
+99
Aqu no puedo representar 1.584 ni 1.58257
0 1 2
Ejemplo de Suma Punto Flotante
en Base Decimal
Sumar 9.999 x 10
1
+ 1.610 x 10
-1
Asumir que podemos almacenar
n Cuatro dgitos para la mantisa
n Dos dgitos para el exponente
Para operarlos debemos hacer que ambos exponentes sean iguales, por lo
que aqul cuyo exponente sea el menor lo llevaremos al del mayor
exponente.
1.610 x 10
-1
= 0.1610 x 10
0
= 0.01610 x 10
1
Sumar/Restar las mantisas: 9.999 + 0.016 =10.015
El resultado es : 10.015 x 10
1
Normalizar:
10.015 x 101 = 1.0015 x 10
2
Al redondear el nmero nos queda:
1.002 x 10
2
9.999
+ 0.016
10.015
7
Conversin de un nmero en Punto Flotante
Decimal a Binario
Un nmero Numb= d0.d1d2d3... en base representa
podemos reescribirlo de la siguiente forma:
Num
10
= d
0
b
0
+ d
1
b
-1
+ d
2
b
-2
+ d
3
b
-3
+ .. + d
n-1
b
-n+1
+ d
n
b
-n
Num
10
= d
0
+ d
1
b
-1
+ d
2
b
-2
+ d
3
b
-3
+ .. + d
n-1
b
-n+1
+ d
n
b
-n
Num
10
= d
0
+ b
-1
*( d
1
+ d
2
b
-1
+ d
3
b
-2
.. + d
n-1
b
-n
+ d
n
b
-n-1
)
Num
10
= d
0
+ b
-1
*( d
1
+ b
-1
*( d
2
+ d
3
b
-1
*( .. + b
-1
* (d
n-1
+ d
n
b
-1
))))
Num
10
= d
0
+ b
-1
q
1
donde q
1
= d
1
+ b
-1
* (d
2
+ d
3
b
-1
*( .. + b
-1
* (d
n-1
+ d
n
b
-1
)))
Conversin de un nmero en Punto Flotante
Decimal a Binario
De la ltima expresin podemos deducir el algoritmo de conversin de
punto flotante decimal a cualquier base
Dado un nmero Num
10
en punto flotante decimal y una base b
d0= parte entera(Num
10
)
Num
10
= (Num
10
- d
0
) * b
i=1
Repetir desde i=1 hasta N
d
i
=parte entera (Num
10
)
Num
10
=(Num
10
- d
i
) * b
8
Conversin de un nmero en Punto Flotante
Decimal a Binario (un ejemplo)
Convertir 3.75
10
a binario y hallar su representacin en IEEE precisin
simple
i Num
10
d
i
=parte entera(Num
10
) NuevoNum
10
=(Num
10
- d
i
) * b
0 3.75 d
0
=3 1.50 = (3.75-3) * 2
1 1.50 d
1
=1 1.00 = (1.50-1) * 2
2 1.00 d
2
=1 0.00 = (1.00-1) * 2
3.75
10
= d
0
. d
1
d
2
= 11.11
2
= 1.111 x 2
1
3.75
10
(3.75-3) * 2 = 1.50 d0=3
(1.50-1) * 2 = 1.00 d
1
=1
(1.00-1) * 2 = 0.00 d
2
=1
3.75
10
= 11.11
2
= 1.111 x 2
1
Conversin de un nmero en Punto Flotante
Decimal a Binario (otro ejemplo)
Convertir 0.3
10
a binario y hallar su representacin en IEEE precisin
simple
0.3
(0.3-0) * 2 = 0.6 d
0
=0
(0.6-0) * 2 = 1.2 d
1
=0
(1.2-1) * 2 = 0.4 d
2
=1
(0.4-0) * 2 = 0.8 d
3
=0
(0.8-0) * 2 = 1.6 d
4
=0
(1.6-1) * 2 = 1.2 d
5
=1
(1.2-1) * 2 = 0.4 d
6
=0
(0.4-0) * 2 = 0.8 d
7
=0
0.3
10
= 0.01001001001...
2
= 1.001001001... x 2
-2
9
Representacin binaria del
exponente
Qu representacin es ms conveniente usar para el exponente?
Si utilizamos Complemento a Dos, los exponentes negativos aparecern como
mayores que los exponentes positivos al usar la circuitera de enteros.
C2(-1) = 1111 1111
C2(0) = 0000 0000
C2(1) = 0000 0001
Para evitar este inconveniente, se utiliza una representacin en exceso N de forma
que el exponente ms negativo posible quede en 0000 0001 y el ms grande de
los positivos en 1111 1110.
Supongamos que tenemos 8 bits para el exponente, entonces:
- Podemos representar 256 nmeros: 0 -> 255,
- Representaremos los exponentes en el inlervalo: -127 --> 128
- Trabajeramos con la notaci6n exceso 127
10
=011111112, y haremosel siguiente
mapeo: E'= E + 127
Representacin del exponente
Ejemplo
Exponente: 10100
2
= 20
10
Exceso 127: 127
10
+ 20
10
= 147
10
= 10010011
2
Exponente: -10100
2
=-20
10
Exceso 127: 127
10
- 20
10
= 107
10
= 01101011
2
10
Estndar de Punto Flotante IEEE 754
Este estndar:
n Ha sido desarrollado para facilitar la portabilidad de
los programas de un procesador a otro y para alentar
el desarrollo de programas numricos sofisticados.
n Ha sido ampliamente adoptado y se utiliza
prcticamente en todos los procesadores y
coprocesadores aritmticos actuales.
n Define el formato para precisin simple de 32 bits y
para precisin doble de 64 bits.
Estndar de Punto Flotante IEEE 754
Precision Sencilla o Simple (32 bits)
1 bit para el signo del nmero en su totalidad.
8 bits para el exponente -exceso en 127-.los valores del exponente
se mueven en el rango de -127 a +128.
23 bits para la fraccin o mantisa.
Doble Precision (64 bits)
1 bit para el signo del nmero en su totalidad.
11 bits para el exponente -exceso en 1023-
52 bits para la fraccin o mantisa.
Precision Extendida (80 bits)
Se usa tan solo en las unidades aritmticas de punto flotante.
11
Observaciones
n Se trabaja con nmeros normalizados, i.e. de la forma:
l,bb...b x 2
e
,
Esto implica que el bit a la izquierda del punto es siempre 1, por lo
tanto no se almacena.
Al no almacenarse ese 1 entonces realmente usamos 23 bits pero el
nmero tiene un bit extra, es decir, 24 bits.
n Para el formato Simple: se suma 127 al exponente original
para almacenarlo en el campo del exponente.
n Para el formato Doble: se suma 1023 al exponente original
para almacenarlo en el campo del exponente.
n La base es 2.
Precisin Simple
Signo nmero
0 significa +
1 significa -
S E M
32 bits
23 bits para la mantisa
Valor representado:
1.M x 2
E - 127
E 8 bits para el exponente
Representacion exceso 127
M 23 bits para la mantisa
8 bits 1 bit
12
Precisin Simple
Signo se encuentra en el bit ms significativo, de esta manera podemos
usar la misma circuitera ( de enteros) para llevar a cabo
comparaciones con respecto al cero.
Mantisa. Est formada por el resto de los bits en la palabra (23). Como los
nmeros se representan de manera normalizada entonces siempre
tendremos un 1 a la izquierda del punto. Por lo tanto este dgito no es
necesario almacenarlo en la palabra y se tiene de manera implcita que
la mantisa consiste realmente en 24 bits de precisin.
Precisin Simple
Exponenteconsigno. Est conformado por los siguientes 8 bits. Esta ubicacin
del exponenteen la palabra facilita las comparaciones de nmeros. Si los
nmeros se encuentran normalizados, comparamos los exponentes. Si son
iguales pasamosa comparar las mantisas. Pero, qu representacin es ms
conveniente usar para el exponente?. Si utilizamos Complemento a Dos, los
exponentes negativos aparecern como mayores que los exponentes positivos al
usar la circuitera de enteros.
Para evitar este inconveniente, se utiliza una representacin en exceso N de
forma que el exponente ms negativo posible quede en 0000 0001 y el ms
grande de los positivos en 1111 1110. El estndar IEEE 754 usa como exceso
127 para precisin simple.
Exponente ms negativo representable:
x + 127 = 0000 0001
x = -126
Exponente ms grande representable
x + 127 = 1111 1110
x = 127
13
Precisin Simple (un ejemplo)
7
10
= 111
2
Normalizamos el nmero y nos queda 1.11
2
x 2
2
El signo es positivo por lo que el campo de S queda con valor 0
Calculamos el exponente con exceso 127
2 + 127 = 129 = 1000 0001
2
El nmero 7
10
en el estndar IEEE es representado como:
S E M
23 bits para la mantisa
32 bits
0 1000 0001 11000000000000000000000
8 bits 1 bit
Precisin Simple (otro ejemplo)
21
10
= 10101
2
Normalizamos el nmero y nos queda 1.0101
2
x 2
4
El signo es positivo por lo que el campo de S queda con valor 0
Calculamos el exponente con exceso 127
4 + 127 = 131 = 1000 0011
2
El nmero 21
10
en el estndar IEEE es representado como:
0 10000011 01010000000000000000000
S E M
23 bits para la mantisa
32 bits
8 bits 1 bit
14
Rango de Valores
n Para un nmero de 32 bits
8 bit de exponente
+/- 2
256
= 1.6 x 10
77
n Precisin
23 bits de mantisa 2
-23
= 1.2 x 10
-7
Un digito entero y alrededor de 7 decimales
Precisin Doble
Signo nmero
0 significa +
1 significa -
S E M
64 bits
52 bits para la mantisa
Valor representado:
1.M x 2
E - 1023
11 bits para el exponente
Representacion exceso 1023
M 52 bits para la mantisa
11 bits 1 bit
15
Precisin Doble
La representacin de un nmero en precisin doble
en el formato IEEE-754 consta de las siguientes
partes:
n Signo se encuentra en el bit ms significativo.
n Exponente en exceso. Est conformado por los
siguientes 11 bits. Se utiliza unarepresentaci n en
exceso 1023 de forma que el exponente m s
negativo posible quede en 000 0000 0001 y el ms
grande de los positivos en 111 1111 1110.
n Mantisa. Est formada por 52 bits ms el bit
implcito (53).
Casos especiales
Para valores de exponente desde 1 hasta 254 en el formato
simple ydesde 1 a hasta 2046 en el formato doble, se
representan nmeros en punto fijo normalizados. El
exponente est en exceso, siendo el rango del exponente de
-126 a +127 en el formato simple y de 1022 a +1023 en el
doble.
Un nmero normalizado debe contener un bit 1 a la izquierda
del punto binario; este bit est implcito, dando una
mantisa efectiva de 24 bits para precisin simple o 53 bits
para precisin doble.
Un exponente cero junto con una parte fraccionaria cero
representa el cero positivo o negativo, dependiendo del bit
de signo. Es til tener una representacindel valor 0
exacto.
16
Casos especiales
Casos especiales
17
Conversin de un decimal a binario enformato IEEE 754
Convertir 3.75
10
a binario y hallar su representacin en IEEE precisin
simple
3.75
10
(3.75-3) * 2 = 1.50 d0=3
(1.50-1) * 2 = 1.00 d
1
=1
(1.00-1) * 2 = 0.00 d
2
=1
3.75
10
= 11.11
2
= 1.111 x 2
1
exponente en exceso = 1 + 127 = 128
10
= 1000 0000
2
Signo positivo = 0
Conversin de un decimal a binario enformato IEEE 754
Convertir 0.3
10
a binario y hallar su representacin en IEEEprecisin simple
0.3
(0.3-0) * 2 = 0.6 d
0
=0
(0.6-0) * 2 = 1.2 d
1
=0
(1.2-1) * 2 = 0.4 d
2
=1
(0.4-0) * 2 = 0.8 d
3
=0
(0.8-0) * 2 = 1.6 d
4
=0
(1.6-1) * 2 = 1.2 d
5
=1
(1.2-1) * 2 = 0.4 d
6
=0
(0.4-0) * 2 = 0.8 d
7
=0
0.3
10
= 0.01001001001...
2
= 1.001001001... x 2
-2
exponente en exceso = -2 + 127 = 125
10
= 0111 1101
2
Signo positivo = 0
18
Conversin de un binario enformato IEEE 754 a decimal
Qu nmero decimal representa el siguiente patrnde bits en
IEEE precisinsimple?
0 00001100 01000000000000000000000
0 00001100 01000000000000000000000
Calculamos el exponente que va a formar parte del nmero decimal,
restando el valor del exponente menos el exceso de 127.
00001100
2
exponente en exceso = 12
10
= exponente + 127
10
=>
exponente = 12 - 127 = -115
10
Mantisa = 1.01000000000000000000000
Los dgitos que estn en la mantisa van a formar parte de el nmero
decimal, y por tanto el nmero representado es
1.01
2
x 2
-115
= ( 1. + 0*2
-1
+ 1* 2
-2
) x 2
-115
= ( 1. + 0.25) x 2
-115
= 1.25
10
x 2
-115
= 1.25
10
x 2
-115
= 1.25
10
x 2.40741x10
-35
= 3.00927 x 10
-35
23 bits para la mantisa 8 bits 1 bit
Conversin de un binario enformato IEEE 754 a decimal
Qu nmero decimal representa el siguiente patrnde bits en
IEEE precisinsimple?
0 10000011 10100000000000000000000
0 10000011 10100000000000000000000
Exponente en exceso = 131
Exponente = 131 - 127 = 4
Mantisa = 10100000000000000000000
1.1010 x 2
4
= 11010 = 26
10
23 bits para la mantisa 8 bits exponente 1 bit
2
4
2
3
2
2
2
1
2
0
1 1 0 1 0
16 8 4 2 1
16 + 8 +2 = 26
19
Underflow o prdida de significancia
El underflow o Subdesbordamiento ocurre cuando el numero con
el que se esta trabajando es tan pequeo que no puede ser
representado en la notacin punto flotante y entonces su valor
es aproximado al valor de Cero ( 0 ).
Dicha situacin puede ocasionar errores graves en clculos
numricos dentro del computador.
Underflow o prdida de significancia
Por que ocurre el underflow?
Supongamos que nuestra maqntisa nos permite almacenar slo 10 di gitos
1.0000000000 x 2
15
1.0000000000 x 2
-10
Al normalizar
1.0000000000 x 2
15
+ 0.0000000000000000000000001 x 2
15
1.0000000000000000000000001 x 2
15
Pero este resultado no cabe en una mantisa de 10 dgitos por lo que se
almacena la parte ms significativa del nmero y se descarta el resto.
1.0000000000000000000000001 x 2
15
1.00000000 x 2
15

También podría gustarte