En precisión simple, el estándard utiliza 32 bits (4 bytes), de los cuales 8 bits (1 byte) es para el exponente E (representando números enteros no negativos que varían entre 0 y 255, esto es, los que se pueden codificar en base 2 con 8 bits); 23 bits son para la parte fraccionaria, F, y 1 bit para el signo, S. Cada bit almacena un 0 o bien un 1. Así, el valor asignado a una representación es (-1)^{S}\times 2^{E-127} \times \mathbb{1}.F
Se utiliza un sesgo de 127 aplicado al valor del exponente almacenado E, dando lugar al exponente verdadero E-127, lo cual tiene como finalidad el poder representar tanto exponentes positivos como negativos; de este modo, un valor almacenado E representa el valor verdadero E-127.
Como ya hemos visto que E varía entre 0 y 255, entonces E-127 toma valores en el conjunto de 2^8=256 elementos: \{-127,-126,\ldots,0,1,2,\ldots,128\}, y , por tanto, 2^{E-127} varía entre 2^{-127}\approx 10^{-38} y 2^{128}\approx 10^{38}.
El ordinal de cada término de la sucesión -127,-126,\ldots,0,1,2,\ldots,128 (empezando a contar desde 0) se denomina característica. El valor de la característica varía pues de 0 (para el valor del primer término -127) a 255 (para el valor del último término 128), y representa el valor del exponente almacenado E.
Designando por n al número de bits del campo del exponente (en nuestro caso n:=8), esta característica es igual, por tanto, al valor del exponente verdadero E-127 más lo que viene a denominarse desplazamiento y que es fácil ver que es igual a 2^{n-1}-1. Así por ejemplo, si el exponente verdadero es E-127:=100, entonces el valor de la característica es 100+2^{8-1}-1=100+128-1=227; y (otro ejemplo), como seria de esperar si E-127:=-127, entonces sus característica es igual a -127+2^{8-1}-1=-127+128-1=0; y si E-127:=-128, entonces su característica es igual a 128+2^{8-1}-1=128+128-1=255, que es el último término de la sucesión que hemos comentado.
Por otra parte, El bit del signo es 0 para positivos y 1 para negativos.
Ejemplo 1.
Consideremos la representación de un cierto número (veremos cuál es al final) en el estándar IEEE 754 de simple precisión (32 bits) \underset{\overbrace{1\; \text{bit para el signo}}}{1}\quad \underset{\overbrace{8\; \text{bits para el exponente}}}{01010011} \quad\underset{\overbrace{23\; \text{bits para la mantisa}}} {10011110\; 00101000\; 0101000}
es tal que:
i) El signo es negativo por ser el valor del bit S igual a 1, y, por tanto, (-1)^S=(-1)^1=-1
ii) la mantisa 1.F es
1+(1\cdot 2^{-1}+0\cdot 2^{-2}+0\cdot 2^{-3}+1\cdot 2^{-4}+\overset{\underbrace{23}}{\ldots}+0\cdot 2^{-22}+0\cdot 2^{-23})
donde a partir del segundo sumando se expresa la cantidad F, siendo el primer sumando a la izquierda, el primer uno, que viene de la notación 1.F, luego la mantisa corresponde al número \dfrac{2097151}{1048576}
iii) El exponente verdadero de la potencia 2^{E-127} es igual a 01010011_{2}, o lo que es lo mismo 0b1010011 — en base 2 los números suelen empezar por 0 o bien por 0b— corresponde a 83_{10}-127=-44
Por tanto, la representación estándard indicada da el valor
-( \dfrac{2097151}{1048576} ) \times 2^{83-127}
es decir -( \dfrac{2097151}{1048576} ) \times 2^{-44} \approx -0.1136868\times 10^{-12}
pues con 23 bits de mantisa el número de dígitos/cifras significativas correctas que podemos asegurar es de 7
Nota: En doble precisión, se reservan 11 bits es para representar el exponente E, donde el sesgo es ahora de 2^{11-1}-1=2^{10}-1=1023.
[1] Moreno, C.: Introducción al Cálculo Numérico, UNED, Madrid, 2011
[2] García Valle, J.L.: Matemáticas especiales para computación, McGraw-Hill, Madrid, 1988
No hay comentarios:
Publicar un comentario