Você está na página 1de 8

IEEE coma flotante

El estándar del 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 del 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 del IEEE (el tipo de C float es típicamente usado para la precisión
simple del IEEE y el tipo double usa la precisión doble del 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). [1]
Índice
[ocultar]

 1 Anatomía de un número en coma flotante


o 1.1 Precisión simple 32-bits
o 1.2 Ejemplo
 2 Véase también
 3 Enlaces externos

Anatomía de un número en coma flotante[editar]


Precisión simple 32-bits[editar]
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 | Mantisa |
+-+--------+-----------------------+
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:

 ceros
 números normalizados
 números desnormalizados
 infinitos
 NaN (¬E, no es un número, como por ejemplo, la raíz cuadrada de un número negativo)
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 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 equilibra
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.
Ejemplo[editar]
Codifiquemos el número decimal -118,625 usando el sistema IEEE coma flotante.
Necesitamos obtener el signo, el exponente y la fracción.
Dado que es un número negativo, el bit de signo es "1".
Primero, escribimos el número (sin signo, es decir 118,625) usando notación binaria. Consulta
el sistema de numeración binario para ver cómo hacer esto. El resultado es 1110110,101.
Ahora, movamos la coma decimal a la izquierda, dejando sólo un 1 a su izquierda.
1110110,101=1,110110101·26 Esto es un número en coma flotante normalizado.
El significante es la parte a la derecha de la coma decimal, rellenada con ceros a la derecha
hasta que obtengamos todos los 23 bits. Es decir 11011010100000000000000.
El exponente es 6, pero necesitamos convertirlo a binario y desplazarlo (de forma que el
exponente más negativo es 0, y todos los exponentes son solamente números binarios no
negativos). Para el formato IEEE coma flotante, el desplazamiento es 127, así es que 6 + 127
= 133. En binario, esto se escribe como 10000101.
Poniendo todo junto:

1 8 23 <-- Tamaño en bits


+-+--------+-----------------------+
|S| Exp | Significante |
|1|10000101|11011010100000000000000|
+-+--------+-----------------------+
31 30 23 22 0 <-- índice del bit (0 a la
derecha)
desplazado +127
CarlosPes.com > Curso de Representación de los Datos > Estándar IEEE 754

Share on facebookShare on emailShare on twitterShare on


printMore Sharing Services115

Estándar IEEE 754


¿Cómo se escribe un número en el Estándar IEEE 754?
El estándar IEEE 754 ha sido definido por el Instituto de Ingenieros Eléctricos y Electrónicos (Institute of
Electrical and Electronics Engineers, IEEE) y establece dos formatos básicos para representar a los números
reales en la computadora digital: precisión simple y precisión doble.

Precisión Simple en el Estándar IEEE 754


En precisión simple, para escribir un número real se usan 32 bits (4 bytes): 1 bit para el signo (s) del número, 23
bits para la mantisa (m) y 8 bits para el exponente (exp), que se distribuyen de la siguiente forma:

Figura - Representación de un número real con precisión simple en el estándar IEEE 754.
El exponente se suele representar en Exceso a 2n-1-1, mientras que, para la mantisa, normalmente se utiliza
Signo Magnitud. Además, la mantisa se suele normalizar colocando la coma decimal a la derecha del bit más
significativo.

Ejemplo 1: Para escribir el número 101110,0101011101000011111000011111000100112 en el estándar IEEE


754 con precisión 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 más significativos:

1,0111001010111010000111

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 más significativo, dicho bit siempre vale 1. Por tanto, se
puede prescindir de él, y coger en su lugar un bit más de la mantisa. De esta forma, la precisión del número
representado es mayor. Así, los bits de la mantisa serán:

01110010101110100001111

Al bit omitido se le llama bit implícito. Por otra parte, el bit de signo vale 0, ya que, el número es positivo. En
consecuencia, el número se puede representar como:

Los programadores, para representar a los números reales en este formato, suelen utilizar el Sistema
Hexadecimal.

Así pues,
En este caso, los números no son exactamente iguales, ya que, con precisión simple no se han podido
representar todos los bits de la mantisa.

Ejemplo 2: Dado el número 3E400000CFL del estándar IEEE 754 con precisión simple, exponente en Exceso a
2n-1-1 y mantisa en Signo Magnitud con bit implícito, para averiguar a qué número representa en base 10, se
pueden realizar los siguientes pasos:

1º) Convertir 3E40000016 a base 2:

2º) Obtener los bits del signo, de la mantisa y del exponente:

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 número en notación científica. Para ello, la mantisa se debe escribir con el bit implícito (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 número es positivo, ya que, el bit de signo es 0.
Por tanto, el número es:

1,1 x 2-3

5º) Expresar el número 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 (PRECISIÓN SIMPLE) = 1,1 x 2-3 = 0,00112 = 0,187510

Precisión Doble en el Estándar IEEE 754


Por otro lado, en precisión doble, para escribir un número real se emplean 64 bits (8 bytes): 1 bit para el signo
(s) del número, 52 bits para la mantisa (m) y 11 bits para el exponente (exp).

Figura - Representación de un número real con precisión doble en el estándar IEEE 754.
Ejemplo 3: Si se quiere escribir el número 19,562510 en el estándar IEEE 754 con precisión doble, exponente
en Exceso a 2n-1-1 y mantisa en Signo Magnitud con bit implícito, los pasos a seguir son:

1º) Cambiar 19,562510 a base 2. Primero la parte entera:

y, a continuación, la parte fraccionaria:


De modo que,

19,562510 = 10011,10012

2º) Normalizar el número binario obtenido, colocando la coma decimal a la derecha del bit más 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 implícito. Para ello, se cogen los ocho bits que están a la derecha de la
coma (00111001) y el resto de la mantisa se rellena con ceros:

0011100100000000000000000000000000000000000000000000

5º) Expresar el número en el estándar IEEE 754 con precisión doble. En este caso, hay que tener en cuenta que
el bit de signo vale 0, ya que, el número es positivo:

6º) Representar el número en hexadecimal:

De tal forma que,

19,562510 = 10011,10012 = 1,00111001 x 24 = 4033A00000000000CFL(PRECISIÓN DOBLE)

Casos especiales en el Estándar IEEE 754


Tanto en precisión doble como en precisión simple, existen algunos casos especiales que dependen de los
valores del signo, del exponente y de la mantisa:

Figura - Casos especiales en el estándar IEEE 754 con precisión simple o doble.
Los dos últimos casos merecen especial atención, ya que, cuando todos los bits del exponente son ceros
(00...0), esto quiere decir que no se está utilizando bit implícito. Si, además, la mantisa es todo ceros (00...0), el
número representado es el cero (0), pero si la mantisa es distinta de todo ceros, el número que se está
representando es muy pequeño, de forma que, el exponente valdrá -126 ó -1022, dependiendo de si el número
está escrito en precisión simple o doble, respectivamente.

Ejemplo 4: Dado el número 805C0000CFL del estándar IEEE 754 con precisión simple, exponente en Exceso
a 2n-1-1 y mantisa en Signo Magnitud con bit implícito, para averiguar a qué número representa en base 10, se
pueden realizar los siguientes pasos:

1º) Convertir 805C000016 a base 2:


2º) Obtener los bits del signo, de la mantisa y del exponente:

3º) Al observar que todos los bits del exponente son ceros (00000000) y la mantisa es distinta de todo ceros, se
deduce que es un caso especial. Se está representado a un número muy pequeño sin bit implícito y, por tanto, el
exponente es -126.

4º) En notación exponencial, puesto que en este caso no se utiliza bit implícito, la mantisa se escribe con un
cero (0), seguido de la coma decimal (,) y de los bits de la mantisa (10111000000000000000000). En cuanto al
signo del número, es negativo, ya que, el bit de signo es1. Con todo ello, el número es:

-0,10111 x 2-126

5º) Expresar el número en base 10:

¿Cómo calcular el valor en base 10 de un número escrito en IEEE 754?


En las dos tablas siguientes se resumen los cálculos que hay que realizar para deducir el valor en base 10 de un
número escrito en el estándar IEEE 754 con precisión simple o doble.

Figura - Cálculo del valor en base 10 de un número escrito en IEEE 754 con precisión simple.

Figura - Cálculo del valor en base 10 de un número escrito en IEEE 754 con precisión doble.

Rangos de representación en el Estándar IEEE 754


Los rangos de representación en el estándar IEEE 754 con precisión simple y doble, exponente en Exceso a 2 n-
1
-1 y mantisa en Signo Magnitud con bit implícito, son los siguientes:

Figura - Rango de representación en el estándar IEEE 754 con precisión simple.

Figura - Rango de representación en el estándar IEEE 754 con precisión doble.


Ambos rangos de representación son discontinuos, es decir, no se pueden representar todos los números reales
que existen entre dos cualesquiera de ellos. Esto es debido a que entre dos números reales cualesquiera
siempre existen infinitos números, sin embargo, sólo se dispone de un número determinado de bits para
representar a los números reales. Por esta razón, en las computadoras digitales no se pueden representar a
todos los números reales. Por ejemplo, con precisión simple, alrededor del número cero (0) existen infinitos
números reales, mayores que -2-126 y menores que 2-126, que no son representables. Gráficamente:

Figura - Números no representables en el estándar IEEE 754 con precisión simple.

Você também pode gostar