Henry Guerrero Coma Flotante
Henry Guerrero Coma Flotante
Henry Guerrero Coma Flotante
Como la representacin en coma flotante es casi idntica a la notacin cientfica tradicional, con algunos aadidos y algunas diferencias, primero se describir la notacin cientfica para entender cmo funciona, y luego se describir la representacin de coma flotante y las diferencias.
Representacin
La notacin cientfica, es usada para representar nmeros reales. Siendo r el nmero real a representar, la representacin en notacin cientfica est compuesta de tres partes:
c. El coeficiente, conformado por un nmero real con un solo dgito entero seguido de una coma (o punto) y de varios dgitos fraccionarios. b. La base, que en nuestro sistema decimal es 10, y en el sistema binario de los computadores es 2. e. El exponente entero, el cual eleva la base a una potencia
Coeficiente
Un signo en el coeficiente indica si el nmero real es positivo o negativo. El coeficiente tiene una cantidad determinada de dgitos significativos, los cuales indican la precisin del nmero representado, cuantos ms dgitos tenga el coeficiente, ms precisa es la representacin.
Base y exponente
El coeficiente es multiplicado por la base elevada a un exponente entero. En nuestro sistema decimal la base es 10. Al multiplicar el coeficiente por la base elevada a una potencia entera, lo que estamos haciendo es desplazando la coma del coeficiente tantas posiciones (tantos dgitos) como indique el exponente. La coma se desplaza hacia la derecha si el exponente es el positivo, o hacia la izquierda si es negativo). Ejemplo de cmo cambia un nmero al variar el exponente de la base: 2,71828 x 10 representa al nmero real 0,0271828 2,71828 x 10 representa al nmero real 0,271828 2,71828 x 10 representa al nmero real 2,71828 (el exponente cero indica que la coma no se desplaza) 2,71828 x 10 representa al nmero real 27,1828 2,71828 x 10 representa al nmero real 271,828
2 1 0 -1 -2
Henry Guerrero T.
Ejemplo
Un ejemplo de nmero en notacin cientfica es el siguiente: -1,234 567 89 x 10
3
El coeficiente es -1,23456789, tiene 9 dgitos significativos, y est multiplicado por la base diez elevada a la 3. El signo del coeficiente indica si el nmero real representado por la notacin cientfica es positivo o negativo. El valor de la potencia nos indica cuntas posiciones (cuntos dgitos) debe ser desplazada la coma del coeficiente para obtener el nmero real final. El signo de la potencia nos indica si ese desplazamiento de la coma debe hacerse hacia la derecha o hacia la izquierda. Una potencia positiva indica que el desplazamiento de la coma es hacia la derecha, mientras que un signo negativo indica que el desplazamiento debe ser hacia la izquierda. En el nmero representado en la notacin cientfica anterior, -1,23456789 x 10 , el exponente es 3 positivo, lo que indica que la coma del coeficiente -1,23456789 debe ser desplazada 3 posiciones hacia la derecha, dando como resultado el nmero real equivalente: -1234,567 89
3
Notacin
Comentario
2,99792458 8 10
2,99792458e8
Usada en el lenguaje BASIC para representar nmeros de doble precisin (15 2,99792458d8 dgitos significativos). Quedando la "e" del ejemplo anterior para nmeros de simple precisin (6 1/2 dgitos significativos)
2,99792458 8 10
x Usada en calculadoras. El exponente de 10, (la expresin x 10 ), es ingresado usando una variedad de teclas dependiendo de la calculadora, como 10x o EXP
Henry Guerrero T.
Sistema binario
Un valor real se puede extender con una cantidad arbitraria de dgitos. La coma flotante permite representar solo una cantidad limitada de dgitos de un nmero real, solo se trabajar con los dgitos ms significativos, (los de mayor peso) del nmero real, de tal manera que un nmero real generalmente no se podr representar con total precisin sino como una aproximacin que depender de la cantidad de dgitos significativos que tenga la representacin en coma flotante con que se est trabajando. La limitacin se halla cuando existen dgitos de peso menor al de los dgitos de la parte significativa. En dicho caso stos suelen ser redondeados, y si son muy pequeos son truncados. Sin embargo, y segn el uso, la relevancia de esos datos puede ser despreciable, razn por la cual el mtodo es interesante pese a ser una potencial fuente de error.
Ejemplo
Emplearemos varios ejemplos para describir la notacin de coma flotante. Abajo tenemos 3 nmeros en una representacin de coma flotante de 16 bits. El bit de la izquierda es el signo, luego hay 6 bits para el exponente, seguidos de 9 bits para la parte significativa:
Signo
El signo es expresado por el bit de la izquierda, con 0 indicando que el nmero es positivo y 1 indicando que el nmero es negativo. En los ejemplos de arriba, el primer nmero es negativo y los dos siguientes son positivos.
Exponente
El exponente indica cunto se debe desplazar hacia la derecha o hacia la izquierda la coma binaria de la parte significativa. En este caso, el exponente ocupa 6 bits capaces de representar 64 valores diferentes, es decir, es un exponente binario (de base 2) que va desde -31 a +32, representando potencias de 2 -31 +32 entre 2 y 2 , indicando que la coma binaria se puede desplazar en hasta 31 dgitos binarios hacia la izquierda (un nmero muy cercano a cero), y hasta 32 dgitos binarios hacia la derecha.
-31 0
0 31
Henry Guerrero T.
Parte significativa
La parte significativa, en este caso, est formada por 10 dgitos binarios significativos, de los cuales tenemos 9 dgitos explcitos ms 1 implcito que no se almacena. Esta parte significativa generalmente est normalizada y tendr siempre un 1 como el bit ms significativo. Debido a que, salvo ciertas excepciones, el bit ms significativo del significante siempre es 1, para ahorrar espacio y para aumentar la precisin en un bit, este bit no se almacena, y por ello se denomina bit oculto o implcito, sin embargo, antes de realizar los clculos este bit implcito debe convertirse en un bit explcito.
Henry Guerrero T.
El exponente se suele representar en Exceso a 2n-1-1, mientras que, para la mantisa, normalmente se utiliza Signo Magnitud. Adems, la mantisa se suele normalizar colocando la coma decimal a la derecha del bit ms significativo. Ejemplo 1: Para escribir el nmero 101110,0101011101000011111000011111000100112 en el estndar IEEE 754 con precisin simple, exponente en Exceso a 2n-1-1 y mantisa en Signo Magnitud, primero hay que normalizarlo: 1,011100101011101000011111000011111000100112 x 25 El exponente, en Exceso a 2n-1-1, ser: 510 + (28-1 - 1)10 = 510 + (27 - 1)10 = 510 + (128 - 1)10 = 13210 = 10000100EX. a 127 De la mantisa se cogen los bits 23 bits ms significativos: 1,0111001010111000000111 El resto de bits no se pueden representar, ya que, no caben en la mantisa. Sin embargo, cuando la mantisa se normaliza situando la coma decimal a la derecha del bit ms significativo, dicho bit siempre vale 1. Por tanto, se puede prescindir de l, y coger en su lugar un bit ms de la mantisa. De esta forma, la precisin del nmero representado es mayor. As, los bits de la mantisa sern: 01110010101110100001111
Henry Guerrero T.
Al bit omitido se le llama bit implcito. Por otra parte, el bit de signo vale 0, ya que, el nmero es positivo. En consecuencia, el nmero se puede representar como:
Los programadores, para representar a los nmeros reales en este formato, suelen utilizar el Sistema Hexadecimal.
En este caso, los nmeros no son exactamente iguales, ya que, con precisin simple no se han podido representar todos los bits de la mantisa. Ejemplo 2: Dado el nmero 3E400000CFL del estndar IEEE 754 con precisin simple, exponente en Exceso a 2n-1-1 y mantisa en Signo Magnitud con bit implcito, para averiguar a qu nmero representa en base 10, se pueden realizar los siguientes pasos: 1) Convertir 3E40000016 a base 2:
Henry Guerrero T.
3) Pasar el exponente a base 10: 011111002 - (28-1 - 1)10 = 12410 - (27 - 1)10 = 12410 - (128 - 1)10 = 12410 - 12710 = -3 4) Escribir el nmero en notacin cientfica. Para ello, la mantisa se debe escribir con el bit implcito (1), seguido de la coma decimal (,) y de los bits de la mantisa (10000000000000000000000), teniendo en cuenta que los ceros por la derecha se pueden despreciar. Por otra parte, el nmero es positivo, ya que, el bit de signo es 0. Por tanto, el nmero es: 1,1 x 2-3 5) Expresar el nmero en base 10. Para ello, hay dos formas de hacerlo, la primera es: 1,1 x 2-3 = 0,00112 = ( 2-3 + 2-4 )10 = 0,12510 + 0,062510 = 0,187510 y la segunda: 1,1 x 2-3 = ( ( 20 + 2-1) x 2-3 )10 = ( ( 1 + 0,5) x 0,125 )10 = ( 1,5 x 0,125 )10 = 0,187510 Por tanto, 3E400000CFL (PRECISIN SIMPLE) = 1,1 x 2-3 = 0,00112 = 0,187510
Figura - Representacin de un nmero real con precisin doble en el estndar IEEE 754. Ejemplo 3: Si se quiere escribir el nmero 19,562510 en el estndar IEEE 754 con precisin doble, exponente en Exceso a 2n-1-1 y mantisa en Signo Magnitud con bit implcito, los pasos a seguir son:
Henry Guerrero T.
De modo que, 19,562510 = 10011,10012 2) Normalizar el nmero binario obtenido, colocando la coma decimal a la derecha del bit ms significativo: 10011,10012 = 1,00111001 x 24 3) Escribir el exponente en Exceso a 2n-1-1: 410 + (211-1 - 1)10 = 410 + (210 - 1)10 = 410 + (1024 - 1)10 = 102710 = 10000000011EX. a 1023 4) Establecer la mantisa utilizando bit implcito. Para ello, se cogen los ocho bits que estn a la derecha de la coma (00111001) y el resto de la mantisa se rellena con ceros: 0011100100000000000000000000000000000000000000000000 5) Expresar el nmero en el estndar IEEE 754 con precisin doble. En este caso, hay que tener en cuenta que el bit de signo vale 0, ya que, el nmero es positivo:
Henry Guerrero T.
Henry Guerrero T.