Sei sulla pagina 1di 6

CONSULTA

IEEE 754 (Coma flotante)


El estndar del IEEE para aritmtica en coma flotante (IEEE 754) es el estndar
ms extendido para las computaciones en coma flotante, y es seguido por
muchas de las mejoras de CPU y FPU. El estndar define formatos para la
representacin de nmeros 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.
Tambin especifica cuatro modos de redondeo y cinco excepciones (incluyendo
cundo ocurren dichas excepciones y qu sucede en esos momentos).
IEEE 754 especifica cuatro formatos para la representacin de valores en coma
flotante: precisin simple (32 bits), precisin doble (64 bits), precisin simple
extendida ( 43 bits, no usada normalmente) y precisin doble extendida (
79 bits, usualmente implementada con 80 bits). Slo los valores de 32 bits son
requeridos por el estndar, los otros son opcionales. Muchos lenguajes
especifican qu formatos y aritmtica del IEEE implementan, a pesar de que a
veces son opcionales. Por ejemplo, el lenguaje de programacin C, ahora
permite pero no requiere la aritmtica del IEEE (el tipo de C float es
tpicamente usado para la precisin simple del IEEE y el tipo double usa la
precisin doble del IEEE).
Precisin simple 32-bits
Un nmero en coma flotante de precisin simple se almacena en una palabra
de 32 bits.
1 8
23
<-- tamao 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 nmero en precisin 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 ms
adelante). Cuando se interpreta el valor en coma flotante, el nmero es
desplazado de nuevo para obtener el exponente real.
El conjunto de valores posibles pueden ser divididos en los siguientes:

ceros

nmeros normalizados

nmeros desnormalizados

infinitos

NaN (E, no es un nmero, como por ejemplo, la raz cuadrada de un


nmero negativo)

Las clases se distinguen principalmente por el valor del campo Exp, siendo
modificada sta por el campo fraccin. Considera Exp y Fraccin como campos
de nmeros binarios sin signo (Exp se encuentra en el rango 0255):
CLASE
Ceros
Numeros
desnormalizados
Numeros
Normalizados
Infinitos
NaN Not a Number

Exp
0
0

Fraccin
0
Distinto de 0

1-254

Cualquiera

255
255

0
Distinto de 0

Para nmeros normalizados, los ms comunes, Exp es el exponente desplazado


y Fraccin es la parte fraccional del significando . El nmero tiene valor v:
v = s 2e m
Donde
s = +1 (nmeros positivos) cuando S es 0
s = 1 (nmeros negativos) cuando S es 1
e = Exp + 127 (en otras palabras, al exponente se le suma 127 y se almacena,
a esto tambin se le llama "biased with 127" en ingls)
m = 1,Fraccin en binario (esto es, el significando es el nmero binario 1
seguido por la coma decimal seguido por los bits de Fraccin). Por lo tanto, 1
m < 2.
Notas:
1. Los nmeros desnormalizados son iguales excepto que e = 126 y m
= 0,Fraccin. (e NO es -127 : el significando ha de ser desplazado a la
derecha por un bit ms, 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 clculo.)
2. 126 es el menor exponente para un nmero 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 diagnstico; el
primer bit del significando es a menudo utilizado para distinguir NaN s
sealizados de NaN s silenciosos
6. los NaNs y los infinitos tienen todos los bits a 1 en el campo Exp.
Ejemplo
Codifiquemos el nmero decimal -118,625 usando el sistema IEEE coma
flotante.
Necesitamos obtener el signo, el exponente y la fraccin.
Dado que es un nmero negativo, el bit de signo es "1".
Primero, escribimos el nmero (sin signo, es decir 118,625) usando notacin
binaria. Consulta el sistema de numeracin binario para ver cmo hacer esto.
El resultado es 1110110,101.
Ahora, movamos la coma decimal a la izquierda, dejando slo un 1 a su
izquierda.
1110110,101=1,11011010126 Esto

es

un

nmero

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 ms negativo es 0, y todos los exponentes son
solamente nmeros 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
<-- Tamao en bits
+-+--------+-----------------------+
|S| Exp |
Significante
|
|1|10000101|11011010100000000000000|
+-+--------+-----------------------+
31 30 23 22
0 <-- ndice del bit (0 a la derecha)
desplazado +127

Cmo funcionan los nmeros de punto flotante

La idea es descomponer el nmero en dos partes:


Una mantisa (tambin llamada coeficiente o significando) que contiene los
dgitos del nmero. Mantisas negativas representan nmeros negativos.
Un exponente que indica dnde se coloca el punto decimal (o binario) en
relacin al inicio de la mantisa. Exponentes negativos representan nmeros
menores que uno.
Este formato cumple todos los requisitos:
Puede representar nmeros de rdenes de magnitud enormemente dispares
(limitado por la longitud del exponente).
Proporciona la misma precisin relativa para todos los rdenes (limitado por la
longitud de la mantisa).
Permite clculos entre magnitudes: multiplicar un nmero muy grande y uno
muy pequeo conserva la precisin de ambos en el resultado.
El estndar
Casi todo el hardware y lenguajes de programacin utilizan nmeros de punto
flotante en los mismos formatos binarios, que estn definidos en el
estndar IEEE 754. Los formatos ms comunes son de 32 o 64 bits de longitud
total:
Formato

Bits
totales

Bits
significativo
s

Bits
del Nmero ms Nmero ms
exponente
pequeo
grande

Precisin
sencilla

32

23
+
signo

~1.2 10-38

~3.4 1038

Precisin
doble

64

52
+
signo

11

~5.0 10-324

~1.8 10308

Curiosidades
Nmero

Nmero

ms

ms

pequeo

grande

representable

representable:

(positivo

no

cero):

Tendiendo a cero hay una serie de nmeros reales no representables:

Matemticamente, cmo funciona este sistema de representacin? Dado un


nmero real x ser representado como su signo, multiplicado por el valor de

su mantisa (nmero normalizado tipo notacin cientfica) y multiplicado


adems por la base de representacin elavada al valor del exponente sesgado.
(1)
(2)
Hablando en trminos de representacin numrica en computadores y
tomando como ejemplo el caso de simple precisin donde se reserva un bit
para el signo, 8 bits para el exponente y 23 bits para la matisa tenemos:

Bit de signo: 0 positivo / 1 negativo

El exponente se representa sesgado al valor dado por la formula (2). En


el caso de simple presicin sera: exps = 2^(8-1)-1=2^7-1=127.

La mantisa en binario es un nmero del tipo 1.xxxxx donde el primer 1


no fraccionario se asume y no se representa dentro del formato.

FORMATO LITTLE-ENDIAN

El trmino ingls endianness ("extremidad") designa el formato en el que se


almacenan los datos de ms de un byte en un ordenador. El problema es
similar a los idiomas en los que se escriben de derecha a izquierda, como
el rabe, o el hebreo, frente a los que se escriben de izquierda a derecha, pero
trasladado de la escritura al almacenamiento en memoria de los bytes.
No se debe confundir trivialmente el orden de escritura textual en este artculo
con el orden de escritura en memoria, por ello establecemos que lo que
escribimos primero lleva ndices de memoria ms bajos, y lo que escribimos a
continuacin lleva ndices ms elevados, que lo que lleva ndices bajos es
previo en memoria, y as sucesivamente, siguiendo la ordenacin natural de
menor a mayor, por ejemplo la secuencia {0,1,2} indicara, -algo ms all de la
intuicin- que 0 es previo y contiguo en el espacio de memoria a 1, etc.

En el sistema little-endian adoptado por Intel, entre otros, el mismo valor se


codificara como {1D, 2C, 3B, 4A}, de manera que de este modo se hace ms
intuitivo el acceso a datos, porque se efecta fcilmente de manera
incremental de menos relevante a ms relevante (siempre se opera con
incrementos de contador en la memoria), en un paralelismo a "lo importante
no es como empiezan las cosas, sino como acaban."

En little endian, guarde el menos byte significativo en la direccin ms


pequea. As es como se vera:

Tenga en cuenta que esto es en el orden inverso en comparacin con big


endian. Para recordar cul es cul, recuerda si el byte menos significativo se
almacena primero (por lo tanto, poco endian) o el byte ms significativo se
almacena primero (por lo tanto, big endian).

Potrebbero piacerti anche