Vous êtes sur la page 1sur 17

Representación en Punto Flotante

• Es necesaria una forma de representar números:


– fraccionales, ejemplo: 3.1416
– muy pequeños, ejemplo: 0.000000003
– muy grandes, ejemplo: 3.15576  109
• Formato general de Representación:
– Signo (siempre 1 bit), exponente y mantisa (ó significando):

Valor Representado = (–1)signo mantisa 2exponente

– Asumimos que la base es 2 porque facilita la implementación de la


aritmética de punto flotante en el procesador
• Estandard de punto flotante normalizado IEEE 754:
– precisión simple: exponente de 8 bits, mantisa de 23 bits
– Precisión doble: exponente de 8 bits, mantisa de 52 bits
Rango de representación
• El rango es el subconjunto de valores reales incluidos
dentro de los límites de la representación.
Rango para la representación entera en complemento a dos:
un bit más en la representación multiplica el rango por dos

Rango de números negativos para Rango de números positivos para


la representación en punto flotante la representación en punto flotante

El cero suele tener una representación Un bit más en el exponente aumenta


especial: exponente=0, mantisa = 0 el rango cuadráticamente !!!
Casos fuera de la representación
• Es imposible abarcar todos los números reales:
– Descartamos los muy grandes y los muy cercanos a cero,
tanto positivos como negativos
• Cuando un número se sale de la representación:
– se genera una condición de error (overflow y underflow)
– el resultado se puede representar con un valor especial
(+/-infinito y +/- cero)
Resolución de la representación
• La resolución es la distancia entre dos valores representables
consecutivos: consideramos que a menor distancia entre los
valores mayor es la resolución!

La resolución para la
representación entera es siempre 1

La resolución para los números muy La resolución disminuye a medida que


pequeños es muy grande (distancia los números son mayores (la distancia
entre números muy pequeña) entre ellos es mayor)
Precisión de la representación
• La precisión es la relación entre la resolución y el número
representado. Indica el error relativo que se comete al representar un
número real usando un subconjunto finito de representaciones.

Como la resolución es siempre 1, la precisión al representar números cercanos a


cero es mucho menor que la precisión al representar números muy grandes
Representar el valor 1,5 como 1 o
como 2, supone un error del 33% !!

La precisión (el error relativo cometido al representar un número) se mantiene


constante en todo el rango de representación. Asignar un bit más a la
representación de la mantisa duplica la precisión.

más resolución la precisión se mantiene constante menos resolución


Mantisa Normalizada. Bit implícito
• Si no se imponen condiciones, existen múltiples
representaciones de un mismo número:
125 = 1,25·102 = 0,125·103 = 0,0125·104 = 0,00000125·108

• Normalizar la mantisa quiere decir imponer que su valor esté


dentro de un rango:
– Generalmente: 2>= mantisa > 1 (el menor valor superior a 1)
– Es decir, siempre tiene el formato: 1.m1m2m3m4 … ms-1ms

• Si el primer bit de la mantisa siempre es un 1, entonces no hace


falta incluirlo en la representación:
– Es implícito, no hace falta incluirlo en la representación que se
almacena en memoria (bit oculto)
– Tenemos un bit más para representar la mantisa y así duplicar la
precisión de la representación
Caso Especial: Mantisa Desnormalizada
• Para el rango de los números más pequeños se puede usar un
formato desnormalizado (sólo para estos números)
• Aunque para los números desnormalizados se disminuye la
precisión, se permite cubrir de forma más amplia el rango de
valores cercanos a cero, y reducir la posibilidad de underflow.

Rango de números desnormalizados


Exponente sesgado (o en exceso)
• Para facilitar la comparación entre los exponentes de dos
números en punto flotante convendría:
– que el exponente menor se represente como 00000 ..
– que el exponente mayor se represente como 11111 …
• al exponente “real” se le suma una constante, el “sesgo” (o
bias) antes de almacenarlo en el formato:
– norma IEEE 754 precisión simple: sesgo es 127
– norma IEEE 754 precisión doble: sesgo es 1023
• La ordenación números en punto flotante corrresponde con la
ordenación de su representación binaria
exponente= 000000, mantisa = 0101010101010100
exponente= 000000, mantisa = 0101010101010101
exponente= 011111, mantisa = 1111111111111111
exponente= 100000, mantisa = 0000000000000000
exponente= 111111, mantisa = 0101010101010101
Resumen: Punto Flotante
• ¿Cómo se almacena en memoria?
s e m

• ¿Cómo interpretarlo (evaluarlo)?


– s: signo (0: positivo, 1: negativo)
– e: exponente sesgado
• 000… exponente menor (negativo)
• 111… exponente mayor (positivo)
– m: bits fraccionarios de la mantisa (bit implícito inicial es 1)

Valor representado= (–1)s m 2e-bias


• El valor del sesgo (bias) no se almacena en el número, sino que es
implícito (predefinido al realizar la especificación de la representación)
Formato normalizado IEEE 754
• Ejemplo: valor –0,75
– Representación decimal: -0.75 = - ( ½ + ¼ )
– Representación binario: -0.11 = -1.1 x 2-1
– IEEE precisión simple:
• Exponente = (-1 + 127) = 126 = 01111110
• Mantisa= 1.1000000…
• 1 01111110 10000000000000000000000
– IEEE precisión doble:
• Exponente = (-1 + 1023) = 1022 = 01111111110
• Mantisa= 1.1000000…
• 1 01111111110 10000000000000000000000…
Formato normalizado IEEE 754
• El exponente 255 se reserva para la representación del
infinito (con signo) y de la representación especial
Not-a-number (NaN):
– Un valor positivo dividido entre 0 da infinito
– 0 dividido entre 0 da not-a-number (NaN)

• El exponente 0 se reserva para la representación de


números desnormalizados y para la representación del 0

• Otras complejidades:
– Bits de guarda y de redondeo
– Se pueden definir diversos modos de redondeo
Formato normalizado IEEE 754
Suma y Resta en punto flotante
• Antes de sumar/restar las matisas hay que igualar los
exponentes:
– Desplazar mantisa del número menor a la derecha
(desnormalizar) mientras se incrementa su exponente
• Tras la operación hay que redondear y volver a
normalizar el resultado
Start

Suma/Resta: Algoritmo 1. Compare the exponents of the two numbers.


Shift the smaller number to the right until its

• Son necesarias operaciones: exponent would match the larger exponent

– de desplazamiento 2. Add the significands

– de suma/resta de mantisas 3. Normalize the sum, either shifting right and

– de normalización incrementing the exponent or shifting left


and decrementing the exponent

– de redondeo
• Puede llegar a ser necesario Overflow or
underflow?
Yes

tener que normalizar y No Exception

redondear 2 veces 4. Round the significand to the appropriate


number of bits

• Se suelen usar bits de


guarda para aumentar la No
Still normalized?

precisión Yes

Done
Suma/Resta:
Hardware
Punto Flotante: Multiplicación
• Caso especial:
– Un operando es cero
• Sumar exponentes:
– Restar el sesgo para que
el exponente resultante
sea correcto
• Control de overflow
y underflow
• Multiplicar mantisas
normalizar y
redondear
Punto Flotante: División
• Casos especiales:
– Divisor es cero
– Dividendo es cero
• Restar exponentes:
– Sumar el sesgo para que
el exponente resultante
sea correcto
• Control de overflow
y underflow
• Dividir mantisas
normalizar y
redondear

Vous aimerez peut-être aussi