La noción de número desnormalizado se utiliza en la representación de números en ciencias de la computación por el método de punto flotante , estandarizado por el estándar IEEE 754 . Es una forma de representar números que tienen un valor muy cercano a cero.
La representación de punto flotante para computadoras se basa en dos conceptos: notación científica y sistema binario (o base 2).
Para escribir números en base 10, podemos utilizar la denominada notación "científica" , que incluye dos partes:
en la forma " n × 10 a ". Por ejemplo :
El término " exponente " corresponde a la potencia de 10, y el término mantisa corresponde a la parte decimal. Por lo tanto, en "1.23 × 10 −2 ",
El sistema binario , también llamado " base 2", es una forma de anotar números que involucran solo dos dígitos, 0 y 1. Se adapta bien a la electrónica, ya que corresponde a dos estados muy distintos: tenemos terminales auxiliares de un componente a voltaje V 0 o un voltaje V 1 ("la corriente no fluye o la corriente pasa"). Para distinguir esta notación de la notación decimal, agregamos aquí una "b" al final del número. A continuación, se muestran algunos ejemplos de números:
Un número decimal binario de cuatro dígitos n 1 n 0 , n -1 n -2 b corresponde al número decimal n 1 × 2 1 + n 0 × 2 0 + n -1 × 2 -1 + n -2 × 2 - 2 .
Así podemos tener una notación científica binaria:
n 1 n 0 , n -1 n -2 b se puede escribir n 1 , n 0 n -1 n -2 b × 2 1 .por ejemplo
En el caso de la notación científica binaria, el número de coma flotante debe estar entre 1b inclusive y 10b excluido (es decir, 2 excluido), es decir, su parte entera es necesariamente 1b.
Según dicho estándar, la representación de un número real se puede desglosar en tres partes:
El valor del número representado es igual a:
valor = signo × (1 + mantisa ) × 2 ( exponente - desplazamiento)De hecho, en la notación científica en base binaria, la parte completa es necesariamente 1, por lo tanto, es inútil usar un bit para representarlo, uno se conforma con representar la parte fraccionaria.
Se dice que un número está desnormalizado cuando
Si siguiéramos la misma representación que para los números con exponente distinto de cero, tendríamos
valor = signo × (1 + mantisa ) × 2 -shiftpero el valor retenido es
valor = signo × mantisa × 2 -shift + 1es decir que para un exponente codificado en 8 bits (la llamada representación de precisión simple), tenemos
valor = signo × mantisa × 2-126y que para un exponente codificado en 11 bits (la llamada representación de doble precisión), tenemos
valor = signo × mantisa × 2-1022Con números desnormalizados, abandonamos la notación científica. Si la mantisa corresponde a 0,1b (la "b" significa que estamos en modo binario, en base dos), entonces:
así vemos que el número representable más pequeño de una manera normalizada es 1.000… 00b × 2 - desplazamiento (ya que una mantisa nula y un exponente nulo se utilizan para representar cero), mientras que en la representación desnormalizada, es 0.000… 01b × 2 - desplazamiento . Por tanto, podemos representar números más pequeños. También asegura la continuidad con los números normalizados, ya que:
o un "salto" de 0.000… 01b × 2 - shift + 1
Por lo tanto, tenemos, con simple precisión:
Tipo | Expositor | Mantisa | Valor aproximado | Desviación / anterior |
---|---|---|---|---|
Cero | 0000 0000 | 000 0000 0000 0000 0000 0000 | 0.0 | |
Número desnormalizado más pequeño | 0000 0000 | 000 0000 0000 0000 0000 0001 | 1,4 × 10 −45 | 1,4 × 10 −45 |
Siguiente número desnormalizado | 0000 0000 | 000 0000 0000 0000 0000 0010 | 2,8 × 10 −45 | 1,4 × 10 −45 |
Siguiente número desnormalizado | 0000 0000 | 000 0000 0000 0000 0000 0011 | 4,2 × 10 −45 | 1,4 × 10 −45 |
... | ... | ... | ... | ... |
Mayor número desnormalizado | 0000 0000 | 111 1111 1111 1111 1111 1111 | 1,175 494 21 × 10 −38 | 1,4 × 10 −45 |
Número normalizado más pequeño | 0000 0001 | 000 0000 0000 0000 0000 0000 | 1,175 494 35 × 10 −38 | 1,4 × 10 −45 |
Siguiente número estandarizado | 0000 0001 | 000 0000 0000 0000 0000 0001 | 1,175 494 49 × 10 −38 | 1,4 × 10 −45 |