1.1.4 Números de punto flotante en 32 y 64 bits. 1.1.4 Números de punto flotante en 1.1.4 Números de punto flotante en 32 y 64 bits.

El estándar de la IEEE para aritmética en coma flotante (IEEE 754) es el estándar más extendido para las computaciones en coma flotante, y es seguido por muchas de las mejoras de CPU y FPU. El estándar define formatos para la representación de números en coma flotante (incluyendo el cero) y valores desnormalizados, así como valores especiales como infinito y NaN, con un conjunto de operaciones en coma flotante que trabaja sobre estos valores. También especifica cuatro modos de redondeo y cinco excepciones (incluyendo cuándo ocurren dichas excepciones y qué sucede en esos momentos).

IEEE 754 especifica cuatro formatos para la representación de valores en coma flotante: precisión simple (32 bits), precisión doble (64 bits), precisión simple extendida (≥ 43 bits, no usada normalmente) y precisión doble extendida (≥ 79 bits, usualmente implementada con 80 bits). Sólo los valores de 32 bits son requeridos por el estándar, los otros son opcionales. Muchos lenguajes especifican qué formatos y aritmética de la IEEE implementan, a pesar de que a veces son opcionales. Por ejemplo, el lenguaje de programación C, ahora permite pero no requiere la aritmética de la IEEE (el tipo de C float es típicamente usado para la precisión simple de la IEEE y el tipo double usa la precisión doble del la IEEE).

El título completo del estándar es IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985), y también es conocido por IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems (originalmente el número de referencia era IEC 559:1989)

Precisión simple 32-bits

Un número en coma flotante de precisión simple se almacena en una palabra de 32 bits.

  1    8               23            <-- tamaño en bits
 +-+--------+-----------------------+
 |S|  Exp   |  Significante         |
 +-+--------+-----------------------+
 31 30    23 22                    0   <-- índice del bit (0 a la derecha)
    desplazado +127

donde S es el bit de signo y Exp es el campo exponente. (Para el signo: 0=Positivo ; 1= Negativo).

El exponente es desplazado en el un número en precisión simple, un exponente en el rango −126 a +127 es desplazado mediante la suma de 127 para obtener un valor en el rango 1 a 254 (0 y 255 tienen valores especiales descritos más adelante). Cuando se interpreta el valor en coma flotante, el número es desplazado de nuevo para obtener el exponente real.

El conjunto de valores posibles pueden ser divididos en los siguientes:

Las clases se distinguen principalmente por el valor del campo Exp, siendo modificada ésta por el campo fracción. Considera Exp y Fracción como campos de números binarios sin signo (Exp se encuentra en el rango 0–255):

 

Clase

Exp

Fracción

Ceros

0

0

Números desnormalizados

0

distinto de 0

Números normalizados

1-254

cualquiera

Infinitos

255

0

NaN (Not a Number)

255

distinto de 0


Para números normalizados, los más comunes, Exp es el exponente desplazado y Fracción es la parte fraccional del significante (o significando). El número tiene valor v:

v = s × 2e × m

Donde

s = +1 (números positivos) cuando S es 0

s = −1 (números negativos) cuando S es 1

e = Exp − 127 (en otras palabras, al exponente se le suma 127 y se almacena, a esto también se le llama "biased with 127" en inglés)


m = 1,Fracción en binario (esto es, el significando es el número binario 1 seguido por la coma decimal seguido por los bits de Fracción). Por lo tanto, 1 ≤ m < 2.

Notas:

  1. Los números desnormalizados son iguales excepto que e = −126 y m = 0,Fracción. (e NO es -127 : el significando ha de ser desplazado a la derecha por un bit más, de forma que incluya el bit principal, que no siempre es 1 en este caso. Esto se balancea incrementando el exponente a -126 para el cálculo.)
  2. −126 es el menor exponente para un número desnormalizado
  3. Hay dos ceros. +0 (S es 0) y −0 (S es 1)
  4. Hay dos infinitos +∞ (S es 0) y −∞ (S es 1)
  5. Los NaN s pueden tener un signo y un significando, pero estos no tienen otro significado que el que puedan aportar en pruebas de diagnóstico; el primer bit del significando es a menudo utilizado para distinguir NaN s señalizados de NaN s silenciosos
  6. los NaNs y los infinitos tienen todos los bits a 1 en el campo Exp.

 

 

 

Punto Flotante

Muchas aplicaciones requieren trabajar con números que no son enteros. Existen varias

formas de representar números 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 dígito menos significativo.

Otra alternativa comunmente usada es la que se conoce como representació n en punto

flotante. Bajo este esquema, un número puede ser expresado mediante un exponente y una

mantisa. Por ejemplo el número 10.75 puede ser expresado como

10.75x 10 0

10.75x 10 1

mantisa exponente

 

En general, un número en punto flotante puede ser representado como ±d0.d1d2d3...dk x bexp

donde d0.d1d2d3...dk se conoce como la mantisa, b es la base y exp es el exponente.

¿Qué se necesita para representar un número en punto flotante?

· el signo del número.

· el signo del exponente.

· Dígitos para el exponente.

· Dígitos para la mantisa.

Dado que un número en punto flotante puede expresarse de distintas formas que son

equivalentes, es necesario establecer una única representación. Es por ello que se trabaja

con números normalizados. Decimos que un número está normalizado si el dígito a la

izquierda del punto o coma está entre 0 y la base ( 0< dígito a la izquierda del punto < b).

En particular, decimos que un número binario está normalizado si el dígito a la izquierda

del punto es igual a 1.

1.00x 10 -1

0.01x 10 2

 

Estándar IEEE-754 para representación de Punto Flotante

Este estándar se desarrolló para facilitar la portabilidad de los programas de un procesador

a otro y para alentar el desarrollo de programas numéricos sofisticados. Este estándar ha

sido ampliamente adoptado y se utiliza prácticamente en todos los procesadores y

coprocesadores aritméticos actuales. El estándar del IEEE define el formato para precisión

simple de 32 bits y para precisió n doble de 64 bits.

 

Precisión Simple

El formato para los números de precisión simple es de 32 bits.

signo

exponente

con signo

Mantisa

1

8

23

 

 

 

 

La representación de un número en precisión simple en el formato IEEE-754 consta de las

siguientes partes:

· Signo se encuentra en el bit más significativo, de esta manera podemos usar la misma circuitería ( de enteros) para llevar a cabo comparaciones con respecto al cero.

· Exponente con signo. Está conformado por los siguientes 8 bits. Esta ubicación

del exponente en la palabra facilita las comparaciones de números. Si los números se encuentran normalizados, comparamos los exponentes. SI son iguales pasamos a comparar las mantisas. Pero, ¿ qué representación es más conveniente usar para el exponente?. Si utilizamos Complemento a Dos, los exponentes negativos aparecerán como mayores que los exponentes positivos al usar la circuitería de enteros.

C2(-1) = 1111 1111

C2(0) = 0000 0000

C2(1) = 0000 0001

Para evitar este inconveniente, se utiliza una representación en exceso N de

forma que el exponente más negativo posible quede en 0000 0001 y el más

grande de los positivos en 1111 1110. El estándar IEEE 754 usa como exceso

127 para precisió n simple.

Exponente más negativo representable:

x + 127 = 0000 0001

x = -126

Exponente más grande representable

x + 127 = 1111 1110

x = 127

· Mantisa. Está formada por el resto de los bits en la palabra (23). Como los

números se representan de manera normalizada entonces siempre tendremos un

1 a la izquierda del punto. Por lo tanto este dígito no es necesario almacenarlo

en la palabra y se tiene de manera implícita. La mantisa consiste en 24 bits de

precisión.

 

Precisión Doble

La representación de un número en precisión n doble en el formato IEEE-754 consta de las

siguientes partes:

· Signo se encuentra en el bit más significativo

 

· 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 más grande de los positivos en 111 1111 1110.

· Mantisa. Está formada por 52 bits más el bit implícito (53).

 

signo

exponente en

exceso

Mantisa

1 bit

11 bits

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 números 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 número normalizado debe contener un bit 1 a la izquierda del punto binario; este bit

está implícito, dando una mantisa efectiva de 24 bits para precisión simple o 53 bits para

precisión 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 representación del valor 0 exacto.

Precisión simple

Exponente en exceso

Mantisa

Valor

0

0

cero

0

<>0

Número no normalizado  (0. + Mantisa) x 2-126

1..254

 

(1. + Mantisa) x 2exp-127

255

0

Infinito

255

<>0

No es número

 

 

Precisión doble

Exponente en exceso

Mantisa

Valor

0

0

Cero

0

<>0

Número no normalizado  (0. + Mantisa) x 2-1022

1 .. 2046

 

(1. + Mantisa) x 2exp-1023

2047

0

Infinito

2047

<>0

No es número

 

 

 

 

Fuentes.

http://es.wikipedia.org/wiki/IEEE_coma_flotante