Aritmetica Punto Flotante
Aritmetica Punto Flotante
Aritmetica Punto Flotante
Punto Flotante
Muchas aplicaciones requieren trabajar con nmeros que no son enteros. Existen varias formas de representar nmeros no enteros. Una de ellas es usando un punto o coma fijo. Este tipo de representaci n ubica simpre el punto o coma en alguna posici n a la derecha del dgito menos significativo. Otra alternativa comunmente usada es la que se conoce como representaci n en punto flotante. Bajo este esquema, un nmero puede ser expresado mediante un exponente y una mantisa. Por ejemplo el nmero 10.75 puede ser expresado como
10 0 10 1 exponente
En general, un nmero en punto flotante puede ser representado como d0 .d1 d2 d3 ...dk x bexp donde d0 .d1 d2 d3 ...dk se conoce como la mantisa, b es la base y exp es el exponente. Qu se necesita para representar un nmero en punto flotante? el signo del nmero. el signo del exponente. Dgitos para el exponente. Dgitos para la mantisa.
Dado que un nmero en punto flotante puede expresarse de distintas formas que son equivalentes, es necesario establecer una nica representacin. Es por ello que se trabaja con nmeros normalizados. Decimos que un nmero est normalizado si el dgito a la izquierda del punto o 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.
Pgina 1 de 9
CI-3815
1.00 x 10 -1 0.01 x 10 2
normalizado no normalizado
Estndar IEEE-754 para representacin de Punto Flotante Este estndar se desarroll para facilitar la portabilidad de los programas de un procesador a otro y para alentar el desarrollo de programas numricos sofisticados. Este estndar ha sido ampliamente adoptado y se utiliza prcticamente en todos los procesadores y coprocesadores aritmticos actuales. El estndar del IEEE define el formato para precisin simple de 32 bits y para precisi n doble de 64 bits.
signo 1
Mantisa 23
La representacin de un nmero en precisin simple en el formato IEEE-754 consta de las siguientes partes: 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. Exponente con signo. Est conformado por los siguientes 8 bits. Esta ubicacin del exponente en la palabra facilita las comparaciones de nmeros. Si los nmeros se encuentran normalizados, comparamos los exponentes. Si son
Pgina 2 de 9
CI-3815
iguales pasamos a comparar las mantisas. Pero, qu representacin es m s 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) = C2(0) = C2(1) = 1111 1111 0000 0000 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 m s grande de los positivos en 1111 1110. El estndar IEEE 754 usa como exceso 127 para precisi n simple.
Exponente ms grande representable x + 127 = 1111 1110 x = 127 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. La mantisa consiste en 24 bits de precisin.
Pgina 3 de 9
CI-3815
Ejercicio Representar segn el estndar IEEE de punto flotante los siguientes valores: 7 - Convertimos el nmero a binario. 710 = 1112 - Normalizamos el nmero. 1.112 x 102 2 - Calculamos el expone nte con exceso127 para precisi n simple. 2 + 127 = 12910 = 1000 00012 - El nmero 710 en el estndar IEEE es representado como: 0 signo 10000001 exponente en exceso 11000000000000000000000 mantisa
21
2110 = 101012 = 1.01012 x 102 4 exponente 4 + 127 = 13110 = 1000 00112 10000011 01010000000000000000000
Precisin Doble La representacin de un nmero en precisi n doble en el formato IEEE-754 consta de las siguientes partes: Signo se encuentra en el bit ms significativo
Pgina 4 de 9
CI-3815
Exponente en exceso. Est conformado por los siguientes 11 bits. Se utiliza una representaci 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. Mantisa. Est formada por 52 bits ms el bit implcito (53).
signo 1 bit
Mantisa 52 bits
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.
Precisin Simple
Exponente en exceso 0 0 1 .. 254 255 255 0 <>0 Mantisa 0 <>0 Valor Cero Nmero no normalizado (0. + Mantisa) x 2-126 (1. + Mantisa) x 2 exp-127 Infinito Not a Number
Pgina 5 de 9
CI-3815
Precisin Doble
Exponente en exceso 0 0 1 .. 2046 2047 2047 0 <>0 Mantisa 0 <>0 Cero Nmero no normalizado (0. + Mantisa) x 2-1022 (1. + Mantisa) x 2 exp-1023 Infinito Not a Number Valor
Conversin de un nmero en Punto Flotante Decimal a Binario Un nmero Numb = d0 .d1 d2 d3 ... en base b representa
De la ltima expresi n podemos deducir el algoritmo de c onversin 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 - d0 ) * b i=1 Repetir desde i=1 hasta N di=parte entera (Num10 ) Num10 =(Num10 - di) * b Num10 = d0 .d1 d2 d3 d4 ...dN b
Pgina 6 de 9
CI-3815
Ejemplos
a.) Convertir 0.510 a binario y hallar su representacin en IEEE precisi n simple 0.50 (0.50-0) * 2 = 1 (1.00-1) * 2 = 0 0.5010 = 0.12 = 1.0 x 2-1 exponente en exceso= -1 + 127 = 12610 = 0111 11102 0 01111110 00000000000000000000000
d0 =0 d1 =1
0 signo
00000000000000000000000 mantisa
b.) Convertir 3.7510 a binario y hallar su representacin en IEEE precisi n simple 3.75 (3.75-3) * 2 = 1.50 (1.50-1) * 2 = 1.00 (1.00-1) * 2 = 0.00 3.7510 = 11.112 = 1.111 x 21 d0 =3 d1 =1 d2 =1
0 signo
11100000000000000000000 mantisa
Pgina 7 de 9
CI-3815
c.) Convertir 0.310 a binario y hallar su representacin en IEEE precisi n simple 0.3 (0.3-0) * 2 = 0.6 (0.6-0) * 2 = 1.2 (1.2-1) * 2 = 0.4 (0.4-0) * 2 = 0.8 (0.8-0) * 2 = 1.6 (1.6-1) * 2 = 1.2
d0 =0 d1 =0 d2 =1 d3 =0 d4 =0 d5 =1
0.310 = 0.01001001001...2 = 1.001001001... x 2-2 exponente en exceso= -2 + 127 = 12510 = 0111 1101 2
0 signo
00100100100100100100100 Mantisa
Esta representaci n es una aproximaci n. No puede ser escrito en forma precisa. Los nmeros punto flotante son normalmente aproximaciones. La razn de esto es que existe un nmero infinito de nmeros reales entre dos nmeros dados.
d.) Qu nmero decimal representa el siguiente patrn de bits en IEEE precisi n simple? 0 00001100 01000000000000000000000 Calculamos el exponente que va a formar parte del nmero decimal, restando el valor del exponente menos el exceso de 127. exponente en exceso= 1210 = exponente + 12710 exponente = 12 - 127 = -11510 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.25) x 2-115 = 1.2510 x 2-115
Pgina 8 de 9
CI-3815
e.) Qu nmero decimal representa el siguiente patrn de bits en IEEE precisi n simple? 0 10000011 10100000000000000000000 exponente en exceso = 131 exponente = 131 - 127 = 4 1.101 x 24 = 11010 = 2610
Ejercicios Propuestos
Convertir los siguientes nmeros a punto flotante binario -1.75610 15.7510 5.62510 1.0 x 10-1 10 5.7525*1010
Cul es el menor entero positivo que se puede representar en C2 con 32 bits, pero que no puede ser representado en Punto Flotante IEEE precisin simple? Qu nmero decimal representan los siguientes patrones de bits si se interpretan como punto flotante IEEE precisin simple ? c1680000 7f800000 fff80000 42be8000 ff800000
Pgina 9 de 9