Está en la página 1de 19

La velocidad no lleva a ninguna parte si no se va en la direccin correcta.

Proverbio Americano

Punto Flotante
Elaborado por Prof. Ricardo Gonzlez A partir de Materiales de las Profesoras Angela Di Serio Mara Blanca Ibaez

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 2,71828 .. 0,000000001 o 3.155.760.000 o (pi) (e) 1,0 x 10 9 (segundos en un nanosegundo) 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.

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 1033 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 10e - 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 100 0.000001 = 1.0 x 10-6 1941 = 1.941 x 103

Representacion en Punto Flotante


N mero en punto flotante = d 0 . d 1 d2 d 3 .. d k x b exp Donde d 0 . d 1 d2 d3 .. 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.

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: 345000010 => 3.45 x 106 0.10012 => 1.001 x 2-1

Clculo de Intervalo y Precisin


.....
-k -k+1

.....

-2

-1

.....

k+1

k+2

..... )

( Intervalo de representacin

d0 ,d1 d2 d3 .. X b e0 e1 ... 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

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

Desbordamiento negativo

Subdesbordamiento negativo

Subdesbordamiento positivo

Desbordamiento positivo

-10 100

-10 -100

0
cero

10 -100
Nmeros positivos expresables

10100

Nmeros negativos expresables

Diferencias entre Punto Flotante y Numeros Reales


Densidad
-1 0 1
1.1 1.2 1.3 1.4 1.5 1.6 .............. 1.9

1.5

1.6

+ 0.100

x 10-99

y 0.999 x

10+99

1.51 1 .52 ............................ .......1.59

Aqu no puedo representar 1.584 ni 1.58257

Ejemplo de Suma Punto Flotante en Base Decimal


Sumar 9.999 x 101 + 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 100 = 0.01610 x 101 Sumar/Restar las mantisas: 9.999 + 0.016 =10.015 El resultado es : 10.015 x 101 9.999 Normalizar: + 0.016 2 10.015 x 101 = 1.0015 x 10 10.015 Al redondear el n mero nos queda: 1.002 x 102

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 = d0 b0 + d 1 b-1 + d 2 b-2 + d 3 b-3 + .. + d n-1 b-n+1 + d n b-n Num 10 = d0 + d 1 b-1 + d 2 b-2 + d 3 b-3 + .. + d n-1 b-n+1 + d n b-n Num 10 = d0 + b -1 *( d 1 + d 2 b-1 + d 3 b-2 .. + d n-1 b-n + d n b-n-1 ) Num 10 = d0 + b -1 *( d 1 + b -1 *( d2 + d 3 b-1 *( .. + b -1 * (dn-1 + d n b-1 )))) Num 10 = d0 + b -1 q1 -1 * (d + d b -1 *( .. + b -1 * (d -1 donde q1 = d 1 + b 2 3 n-1 + d n b )))

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 Num10 en punto flotante decimal y una base b d0= parte entera(Num10 ) Num10 = (Num10 - d 0 ) * b i=1 Repetir desde i=1 hasta N d i =parte entera (Num10 ) Num10 =(Num10 - d i ) * b

Conversin de un nmero en Punto Flotante Decimal a Binario (un ejemplo)


Convertir 3.7510 a binario y hallar su representacin en IEEE precisin simple i Num10 d i =parte entera(Num10 ) NuevoNum10 =(Num10 - 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 1 3.7510 = d 0 . d 1 d 2 = 11.112 = 1.111 x 2 3.7510 (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.7510 = 11.112 = 1.111 x 21

Conversin de un nmero en Punto Flotante Decimal a Binario (otro ejemplo)


Convertir 0.310 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.310 = 0.01001001001...2 = 1.001001001... x 2-2

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 12710 = 011111112, y haremosel siguiente mapeo: E'= E + 127

Representacin del exponente


Ejemplo Exponente: 101002 = 2010 Exceso 127: 12710 + 2010 = 14710 = 10010011 2 Exponente: -101002 =-2010 Exceso 127: 12710 - 2010 = 10710 = 011010112

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.

10

Observaciones
n

Se trabaja con nmeros normalizados, i.e. de la forma: l,bb...b x 2e,


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.

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
32 bits

S
1 bit

E
8 bits

M
23 bits para la mantisa

Signo nmero 0 significa + 1 significa M 23 bits para la mantisa

E 8 bits para el exponente Representacion exceso 127

Valor representado: 1.M x 2E - 127

11

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
Exponente con signo. 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

12

Precisin Simple (un ejemplo)


32 bits

S
1 bit

E
8 bits

M
23 bits para la mantisa

710 = 1112 Normalizamos el nmero y nos queda 1.112 x 22 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 00012 El nmero 710 en el estndar IEEE es representado como:

0 1000 0001

11000000000000000000000

Precisin Simple (otro ejemplo)


32 bits

S
1 bit

E
8 bits

M
23 bits para la mantisa

2110 = 101012 Normalizamos el nmero y nos queda 1.01012 x 24 El signo es positivo por lo que el campo de S queda con valor 0 Calculamos el exponente con exceso 127 4 + 127 = 1 31 = 1000 00112 El nmero 2110 en el estndar IEEE es representado como:

0 10000011 01010000000000000000000

13

Rango de Valores
n

Para un nmero de 32 bits


8 bit de exponente +/- 2256 = 1.6 x 1077

Precisin
23 bits de mantisa 2-23 = 1.2 x 10-7 Un digito entero y alrededor de 7 decimales

Precisin Doble
64 bits

S
1 bit

E
11 bits

M
52 bits para la mantisa

Signo nmero 0 significa + 1 significa M 52 bits para la mantisa

11 bits para el exponente Representacion exceso 1023

Valor representado: 1.M x 2E - 1023

14

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 y desde 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 representacin del valor 0 exacto.

15

Casos especiales

Casos especiales

16

Conversin de un decimal a binario enformato IEEE 754


Convertir 3.7510 a binario y hallar su representacin en IEEE precisin simple 3.7510 (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.7510 = 11.112 = 1.111 x 21 exponente en exceso = 1 + 127 = 12810 = 1000 00002 Signo positivo = 0

Conversin de un decimal a binario enformato IEEE 754


Convertir 0.310 a binario y hallar su representacin en IEEE precisin simple 0.3 (0.3-0) * 2 = 0.6 d0=0 (0.6-0) * 2 = 1.2 d1=0 (1.2-1) * 2 = 0.4 d2=1 (0.4-0) * 2 = 0.8 d3=0 (0.8-0) * 2 = 1.6 d4=0 (1.6-1) * 2 = 1.2 d5=1 (1.2-1) * 2 = 0.4 d6=0 (0.4-0) * 2 = 0.8 d7=0 0.310 = 0.01001001001...2 = 1.001001001... x 2-2 exponente en exceso = -2 + 127 = 12510 = 0111 11012 Signo positivo = 0

17

Conversin de un binario enformato IEEE 754 a decimal Qu nmero decimal representa el siguiente patrn de bits en IEEE precisin simple? 0 00001100 01000000000000000000000 0 00001100 01000000000000000000000
1 bit 8 bits 23 bits para la mantisa

Calculamos el exponente que va a formar parte del nmero decimal, restando el valor del exponente menos el exceso de 127. 000011002 exponente en exceso = 1210 = exponente + 12710 => exponente = 12 - 127 = -11510 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.012 x 2-115 = ( 1. + 0*2-1 + 1* 2-2 ) x 2-115 = ( 1. + 0.25) x 2-115 = 1.2510 x 2-115 = 1.2510 x 2-115 = 1.2510 x 2.40741x10-35 = 3.00927 x 10 -35

Conversin de un binario enformato IEEE 754 a decimal Qu nmero decimal representa el siguiente patrn de bits en IEEE precisin simple? 0 10000011 10100000000000000000000 0 10000011 10100000000000000000000
1 bit 8 bits exponente 23 bits para la mantisa

Exponente en exceso = 131 Exponente = 131 - 127 = 4 Mantisa = 10100000000000000000000 1.1010 x 24 = 11010 = 2610 24 23 22 21 20 1 1 0 1 0 16 8 4 2 1 16 + 8 +2 = 26

18

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 digitos 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

19