Representación de coma flotante: conceptos básicos

Hay publicaciones sobre la representación del formato de punto flotante. El objetivo de este artículo es proporcionar una breve introducción al formato de punto flotante. 

La siguiente descripción explica la terminología y los detalles principales de la representación de punto flotante binario IEEE 754. La discusión se limita a formatos de precisión simple y doble. 

Por lo general, un número real en binario se representará en el siguiente formato, 
 

Yo m Yo m-1 …Yo 2 Yo 1 Yo 0 .F 1 F 2 …F n F n-1

Donde I m y F n serán 0 o 1 de partes enteras y fraccionarias respectivamente. 

Un número finito también se puede representar mediante cuatro componentes enteros, un signo (s), una base (b), un significativo (m) y un exponente (e). Entonces el valor numérico del número se evalúa como 
 

(-1) s xmxb e ________ Donde m < |b|

Según la base y la cantidad de bits utilizados para codificar varios componentes, el estándar IEEE 754 define cinco formatos básicos. Entre los cinco formatos, binary32 y binary64 son formatos de precisión simple y precisión doble, respectivamente, en los que la base es 2. 
 

Tabla – 1 Representación de precisión

Precisión Base Señal Exponente Importante
Precisión simple 2 1 8 23+1
Precisión doble 2 1 11 52+1

Formato de precisión única: 

Como se menciona en la Tabla 1, el formato de precisión simple tiene 23 bits para significativo (1 representa bit implícito, detalles a continuación), 8 bits para exponente y 1 bit para signo. 

Por ejemplo, el número racional 9 ÷ 2 se puede convertir al formato flotante de precisión simple de la siguiente manera, 
 

9 (10) ÷ 2 (10) = 4,5 (10) = 100,1 (2)

Se dice que el resultado está normalizado , si se representa con 1 bit inicial, es decir, 1,001 (2) x 2 2 . (Del mismo modo, cuando se normaliza el número 0,000000001101 (2) x 2 3 , aparece como 1,101 (2) x 2 -6 ). Omitir este 1 implícito en el extremo izquierdo nos da la mantisa del número flotante. Un número normalizado proporciona más precisión que el número desnormalizado correspondiente . El bit más significativo implícito se puede usar para representar un significado aún más preciso (23 + 1 = 24 bits), lo que se denomina representación subnormal . Los números de coma flotante deben representarse en forma normalizada.

Los números subnormales entran en la categoría de números desnormalizados. La representación subnormal reduce ligeramente el rango del exponente y no se puede normalizar porque eso daría como resultado un exponente que no cabe en el campo. Los números subnormales son menos precisos, es decir, tienen menos espacio para bits distintos de cero en el campo de fracción que los números normalizados. De hecho, la precisión disminuye a medida que disminuye el tamaño del número subnormal. Sin embargo, la representación subnormal es útil para archivar espacios en la escala de punto flotante cerca de cero. 

En otras palabras, el resultado anterior se puede escribir como (-1) 0 x 1.001 (2) x 2 2 lo que produce los componentes enteros como s = 0, b = 2, significativo (m) = 1.001, mantisa = 001 y e = 2. El número flotante de precisión simple correspondiente se puede representar en binario como se muestra a continuación, 

Donde se supone que el campo del exponente es 2, pero codificado como 129 (127+2) se llama exponente sesgado . El campo de exponente está en formato binario simple que también representa exponentes negativos con una codificación (como magnitud de signo, complemento a 1, complemento a 2, etc.). El exponente sesgado se utiliza para la representación de exponentes negativos. El exponente sesgado tiene ventajas sobre otras representaciones negativas al realizar la comparación bit a bit de dos números de punto flotante para la igualdad. 

Un sesgo de (2 n-1 – 1), donde n es el número de bits utilizados en el exponente, se suma al exponente (e) para obtener el exponente sesgado ( E ). Entonces, el exponente sesgado ( E ) del número de precisión simple se puede obtener como 
 

mi = mi + 127

El rango de exponente en formato de precisión simple es de -128 a +127. Se utilizan otros valores para símbolos especiales. 

Nota: Cuando desempaquetamos un número de coma flotante, el exponente obtenido es el exponente sesgado. Restando 127 del exponente sesgado podemos extraer el exponente no sesgado. 

Formato de doble precisión: 

Como se menciona en la Tabla 1, el formato de doble precisión tiene 52 bits para significativo (1 representa un bit implícito), 11 bits para exponente y 1 bit para signo. Todas las demás definiciones son las mismas para el formato de doble precisión, excepto por el tamaño de varios componentes. 

Precisión: 

El cambio más pequeño que se puede representar en la representación de coma flotante se denomina precisión. La parte fraccionaria de un número normalizado de precisión simple tiene exactamente 23 bits de resolución (24 bits con el bit implícito). Esto corresponde a log (10) (2 23 ) = 6,924 = 7 (la característica del logaritmo) dígitos decimales de precisión. De manera similar, en el caso de números de doble precisión, la precisión es log (10) (2 52 ) = 15.654 = 16 dígitos decimales. 

Precisión: 

La precisión en la representación de punto flotante se rige por el número de bits significativos, mientras que el rango está limitado por el exponente. No todos los números reales se pueden representar exactamente en formato de punto flotante. Para cualquier número que no sea un número de punto flotante, hay dos opciones para la aproximación de punto flotante, por ejemplo, el número de punto flotante más cercano menor que x como x_ y el número de punto flotante más cercano mayor que x como x+. Se realiza una operación de redondeo en el número de bits significativos en el campo de mantisa según el modo seleccionado. El modo de redondeo hacia abajo hace que x se establezca en x_, el modo de redondeo hacia arriba hace que x se establezca en x+, el redondeo hacia ceroel modo hace que x sea x_ o x+, cualquiera que esté entre cero y. El modo redondo al modo más cercano establece x en x_ o x+, lo que sea más cercano a x. Por lo general , redondear al más cercano es el modo más utilizado. La cercanía de la representación de punto flotante al valor real se denomina precisión

Patrones de bits especiales: 

El estándar define algunos patrones de bits de coma flotante especiales. Cero no puede tener 1 bit más significativo, por lo tanto, no se puede normalizar. La representación de bits ocultos requiere una técnica especial para almacenar cero. Tendremos dos patrones de bits diferentes +0 y -0 para el mismo valor numérico cero. Para la representación de punto flotante de precisión simple, estos patrones se dan a continuación, 

0 00000000 000000000000000000000000 = +0 

1 00000000 000000000000000000000000 = -0 

De manera similar, el estándar representa dos patrones de bits diferentes para +INF y -INF. Los mismos se dan a continuación, 

0 11111111 000000000000000000000000 = +INF 

1 11111111 000000000000000000000000 = -INF 

Todos estos números especiales, así como otros números especiales (a continuación) son números subnormales, representados mediante el uso de un patrón de bits especial en el campo exponencial. Esto reduce ligeramente el rango del exponente, pero esto es bastante aceptable ya que el rango es muy grande. 

Un intento de calcular expresiones como 0 x INF, 0 ÷ INF, etc. no tiene sentido matemático. El estándar llama al resultado de tales expresiones Not a Number (NaN). Cualquier expresión posterior con NaN produce NaN. La representación de NaN tiene un significado distinto de cero y solo 1 en el campo del exponente. Estos se muestran a continuación para el formato de precisión simple (x no importa bits), 

x 11111111 1 metro 00000000000000000000000 

Donde m puede ser 0 o 1. Esto nos da dos representaciones diferentes de NaN. 

0 11111111 110000000000000000000000 _____________ Señalización NaN (SNaN) 

0 11111111 1000000000000000000000000 _____________Silencio NaN (QNaN) 

Por lo general, QNaN y SNaN se utilizan para el manejo de errores. QNaN no genera ninguna excepción ya que se propaga a través de la mayoría de las operaciones. Mientras que SNaN son los que, cuando son consumidos por la mayoría de las operaciones, generarán una excepción no válida. 

Desbordamiento y subdesbordamiento: 

Se dice que se produce un desbordamiento cuando el verdadero resultado de una operación aritmética es finito pero de mayor magnitud que el mayor número de punto flotante que se puede almacenar utilizando la precisión dada. Se dice que se produce un subdesbordamiento cuando el verdadero resultado de una operación aritmética es de menor magnitud (infinitesimal) que el número de punto flotante normalizado más pequeño que se puede almacenar. El desbordamiento no se puede ignorar en los cálculos, mientras que el subdesbordamiento se puede reemplazar efectivamente por cero. 

endianidad: 

El estándar IEEE 754 define un formato de punto flotante binario. Los detalles de la arquitectura se dejan a los fabricantes de hardware. El orden de almacenamiento de bytes individuales en números binarios de coma flotante varía de una arquitectura a otra. 

Gracias a Venki por escribir el artículo anterior. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *