Formato binario decimal mixto vs IEEE754

En el tema anterior, consideramos un nuevo formato para representar números decimales de coma flotante, que llamamos formato mixto decimal-binario (SDDF).

Este formato le permite realizar cálculos aritméticos en una computadora sin usar BCD con la misma precisión que si los cálculos se realizaran manualmente.
Recuerde que un formato mixto decimal-binario (SDDF) es un formato de representación de código binario para números decimales de coma flotante, en el que la mantisa entera es el equivalente binario de su valor decimal, y el exponente es el equivalente binario de la potencia de 10. El número real en SDF se representa como

F=SM210e


donde M2y e son enteros binarios. El equivalente binario de un número decimal es el código binario de este número decimal en el formato seleccionado. El equivalente decimal de un número binario es el código decimal de este número binario.

Comparemos las propiedades básicas de los números de coma flotante, que se presentan en el estándar IEEE754 y SDDF. Para simplificar, considere una palabra de máquina de 16 bits. Este es el llamado formato de media precisión . Los resultados de la comparación se pueden escalar fácilmente al caso de un formato de intercambio de precisión simple y doble.

Dividimos la palabra binaria de 16 bits en los siguientes campos: S, e, m. Donde está el dígito S del signo del número, e - 5 bits del exponente desplazado, m - 10 bits del equivalente binario de la mantisa decimal del número. El valor binario máximo del exponente de desplazamiento registrado en el registro de 5 bits será igual a emax = 11111, o en forma decimal emax = 31. La compensación en este caso es 15.

Entonces

1) El número de mantisa empaquetado en IEEE754 contiene la parte fraccionaria del número de mantisa.

El número de mantisa en SDDF es un entero binario.

2) La mantisa IEEE normalizada en la forma desempaquetada se parece a 1.xxxxxxxxxx. Donde x es cualquier dígito binario.

Como la mantisa está normalizada, toda su parte en forma desempaquetada siempre es igual a 1. Esta unidad no se puede almacenar en la memoria de la máquina. Por lo tanto, en la forma desempaquetada, teniendo en cuenta la unidad virtual, la mantisa tendrá 11 bits.

La mantisa normalizada en el SDDF es un entero binario igual al equivalente del número decimal, que en nuestro caso está representado por tres dígitos: UXX. Donde U es cualquier dígito decimal no igual a cero. X es cualquier dígito decimal.

Se puede representar un número decimal máximo de 1023 en 10 bits de la mantisa. Se puede garantizar que todos los enteros menores de 1023 se representan en 10 bits. Por lo tanto, todos los enteros decimales con mantisa ≤ 999 se pueden representar exactamente con 10 bits de la mantisa.

3) En IEEE754, la mantisa binaria normalizada máxima es Mmax = 1.1111111111 = 1.9990234375

El número garantizado de dígitos válidos que puede ser representado por una mantisa binaria de 11 bits es 3 .

La mantisa decimal normalizada máxima en SDDF es Mmax = 999 o binaria Mmax = 1 111 100 111. El equivalente decimal de la mantissa consiste en 3 dígitos decimales. Por lo tanto, la mantisa de tres dígitos en nuestro ejemplo se representa con precisión en SDDF 3 en dígitos decimales significativos.

4) En IEEE754, el valor mínimo normalizado de mantisa, con emin = 0, será: Mmin = 1.0

La mantisa normalizada mínima en SDDF, en emin = 0, es igual al número decimal Mmin = 100. O en forma binaria Mmin = 0001100100.

5) El número decimal positivo máximo que se puede escribir en formato IEEE754 con un exponente sesgado será

Fmax = 2 ^ emax * Mmax = 2 ^ 31 * 1.9990234375 = 4292870144 = 4.292870144 * 10 ^ 9. Sin embargo, en el estándar, el número máximo es el número Fmax = 2 ^ emax = 2 ^ 31 = 4294967296 = 4.294967296 * 10 ^ 8. Los números> 2 ^ 31 se consideran iguales más infinito.

El número decimal positivo máximo que se puede escribir con precisión en el formato SDDF con un exponente sesgado será

Fmax = 10 ^ emax * Mmax = 10 ^ 31 * 999 = 9.99 * 10 ^ 33

6) El rango de números normalizados aproximados que se pueden representar en formato IEEE será

Fmax / Fmin = 2 ^ 31 = 4294967296 = 4.294967296 * 10 ^ 8

El rango de números exactos que se pueden representar en el formato SDDF será igual a
Fmax / Fmin = 9.99 * 10 ^ 31

7) El paso de cambiar el número binario en IEEE con un exponente de compensación (emin = 0) es:
h = 0.0000000001 = 2 ^ -10 = 0,0009765625

El paso de cambiar el número decimal en el SDDF con un exponente desplazado (emin = 0) es:
h = 00001100100 = 100

8) En IEEE754, con un exponente sesgado, si e = 0, entonces todos los números que son <1.0 son subnormales. Cuanto más pequeño es el número subnormal, menos exactamente representa su equivalente decimal. Se requieren algoritmos especiales para codificar números subnormales en un formato de intercambio, decodificar desde un formato de intercambio, así como trampas especiales para determinar números subnormales durante operaciones aritméticas.

No hay números subnormales en SDDF. Todos los números están representados con precisión, en nuestro caso, hasta 3 dígitos significativos.

9) Con un exponente imparcial, el número decimal positivo normalizado máximo que se puede escribir en el formato IEEE754 será
Fmax = 2 ^ emax * Mmax = 2 ^ 15 * 1.9990234375 = 65504. Sin embargo, en el estándar, el número máximo es el número Fmax = 2 ^ emax = 2 ^ 15 = 32768. Los números> 32768 se consideran iguales más infinito.

Con un exponente imparcial, el número decimal positivo máximo que se puede escribir en el SDDF será igual a

Fmax = 10 ^ emax * Mmax = 999 * 10 ^ 15 = 9.99 * 10 ^ 17

10) Con un exponente imparcial, el número decimal positivo mínimo normalizado en formato IEEE754 será Fmin = 1.0 * 2 ^ -15 =
3.0517578125 * 10 ^ -5.

Con un exponente imparcial, el número decimal positivo mínimo normalizado que se puede escribir en el formato SDDF será Fmin = 100 * 10 ^ -15 = 10 ^ -13

11) Con un exponente imparcial, el mínimo paso decimal equivalente binario en IEEE es:

h = 0.0000000001 * 2 ^ -15 = 2 ^ -25 = 3.0517578125 * 10 ^ -5

Con un exponente imparcial, el paso mínimo en el SDDF coincide con el número mínimo y es igual a:

h = 001100100 * 10 ^ -15 = 10 ^ -13

12) En IEEE754, la función de la dependencia del valor del equivalente decimal del número Fd en su valor binario no es uniforme, porque para cambiar por 1 el dígito menos significativo de la mantisa decimal del número, como regla, es necesaria la suma de varias h igual a la máquina Ɛ.
Entonces, por ejemplo, si e = 0, para Fd1 = 1.0 = 1.0000000000 y Fd2 = 1.1≈1.0001100110 tendremos
Fd2- Fd1 = 1.0001100110 -1.0000000000 = 0.0001100110 = 0.099609375
0.0001100110 / h = 0.0001100110 / 0.0000000001 = 1100110 = 102 = Ɛ

En SDDF, la función de la dependencia del valor del equivalente decimal del número Fd en su valor binario es uniforme. Cualquier cambio en h del equivalente binario del número decimal mantisa implica un cambio en el 1 bit menos significativo del equivalente decimal del número. Aquí la máquina Ɛ = 1. De verdad.

Si e = 0,
Fd1 = 100 = 0001100100
Fd2 = 200 = 0011001000
Fd2- Fd1 = 0011001000-0001100100 = 0001100100 = 100 = h

En conclusión, presentamos las características principales de la representación de números reales en el estándar IEEE754 y SDDF para el formato de intercambio, que consta de 32 bits (precisión simple en el estándar IEEE754).

Para IEEE754, los bits de palabras de máquina de precisión simple se asignan como S - 1 bit del código de signo, e - 8 bits del exponente sesgado, m - 23 bits de mantisa explícitos. Desempaquetado, m = 24.

Para IEEE754:
El coeficiente de desplazamiento exponencial es 127 emax = 127. El orden imparcial del número normalizado más pequeño con M = 1.0 es p = e-127 + 1 = -126. Los números <2 ^ -126 se consideran subnormales.

El número mínimo normalizado es Fmin = 1.0 * 2 ^ -126 = 1.1754943508222875079687365372222e-38

El número máximo normalizado
Fmáx = 2 ^ 127 = 1,7014118346046923173168730371588e + 38

Los números que exceden 2 ^ 127 se consideran infinito positivo.

Para SDDF, los dígitos de la palabra máquina se distribuyen de la siguiente manera: S - 1 dígito, e - 7 bits, m - 24 bits. El coeficiente de desplazamiento exponencial es 63. Entonces

emax = 64
Mmax = 9999999
Fmáx = 9999999 * 10 ^ 64 = 9.999999 * 10 ^ 70
Fmin = 1,000,000 * 10 ^ -63 = 10 ^ -57

La precisión de la representación de números decimales reales es de 7 dígitos decimales significativos.

Source: https://habr.com/ru/post/es414117/


All Articles