¿Por qué todos los ceros (0000 0000) en el campo de exponente representan el exponente -126 y no -127 en coma flotante IEEE de precisión simple?

Debido a que un exponente cero se usa como un caso especial para denotar ‘cero real’ (que tiene todos los bits cero en la mantisa), y también un número ‘desnormalizado’ (la diferencia entre dos flotadores que es demasiado pequeña para representarse con un exponente de -126). La detección de todos los ceros en este campo es una parte vital del manejo de casos especiales (software o hardware).

Históricamente, es una decisión de implementación que afectó la cantidad de código necesario para escribir (para implementaciones de software) o la cantidad de puertas lógicas necesarias en el hardware. La idea básica era que las operaciones enteras regulares en los 32 bits darían resultados correctos en la mayor cantidad de casos posible. En particular, los números con 1 en el campo de exponente pueden tratarse como valores de punto fijo, y su diferencia de enteros eliminaría el campo de exponente y obtendría el valor correcto en la mantisa. (En otras palabras, obtienes el comportamiento correcto para valores de exponente mínimos y para valores desnormalizados, esencialmente ‘gratis’ con esta convención).

Esencialmente, es un truco de rendimiento: se requiere menos código, menos ciclos de reloj o menos silicio.

El exponente 0 representa el flujo inferior y el bit implícito ahora es 0. El flujo inferior significa precisión perdida, pero lo que sea, puede manejarlo.