Pregunta

¿Por qué exponente en flotador se desplaza por 127?
Bueno, la pregunta real es: ¿Cuál es la ventaja de esta notación en comparación con la notación de complemento a 2

?
¿Fue útil?

Solución

Desde el exponente como se almacena no está firmado, es posible utilizar instrucciones de enteros para comparar los valores de punto flotante. la totalidad del valor de coma flotante puede ser tratado como un valor con signo de magnitud número entero para fines de comparación (no de dos en dos-cumplido).

Otros consejos

Sólo para corregir algunos información errónea:. Es 2^n * 1.mantissa, el 1 en frente de la fracción se almacena implícitamente

Tenga en cuenta que hay una ligera diferencia en el rango representable para el exponente, entre parcial y complemento a 2. El estándar IEEE apoya exponentes en el rango de (entre -127 y +128), mientras que si se tratara de complemento a 2, sería (-128 a 127). Realmente no sé la razón por la norma elige la forma de polarización, pero tal vez los miembros del comité pensaba que sería más útil para permitir un número extremadamente grande, en lugar de números muy pequeños.

@Stephen Canon , en respuesta a Respuesta ysap 's (lo siento, esto debería haber sido un comentario de seguimiento a mi respuesta, pero la respuesta original fue introducido como un usuario no registrado, así que no puedo comentar todavía).

Stephen, obviamente, tiene usted razón, la gama exponente he mencionado no es correcta, pero el espíritu de la respuesta sigue siendo válida. Si se asume que si se tratara de complemento a 2 en lugar del valor sesgada, y suponiendo que el valor 0xFF 0x00 y todavía serían valores especiales, a continuación, los exponentes sesgadas permiten (2x) los números más grandes que los de la 2 exponentes del complemento.

El exponente en un flotador 32 bits consta de 8 bits, pero sin un bit de signo. Por lo que el rango es efectivamente [0; 255]. Con el fin de representar números <2 ^ 0, de ese rango se desplaza por 127, convirtiéndose. [-127; 128]

De esta manera, un número muy pequeño puede ser representado de forma muy precisa. Con una; rango [0 255], los números pequeños tendrían que ser representado como 2^0 * 0.mantissa con un montón de ceros en la mantisa. Pero con una; intervalo [-127 128], los números pequeños son más precisos porque pueden ser representados como 2^-126 * 0.mantissa (con ceros menos innecesarias en la mantisa). Esperanza usted consigue el punto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top