digamos, para flotador escriba en c, de acuerdo con la especificación de punto flotante IEEE, hay 8 bits utilizados para la fracción presentada, y se calcula como primero tomó estos 8 bits y lo tradujo a número sin signo, y luego menos BIASE, que es 2^7 - 1 = 127, y el resultado es un exponente que va de -127 a 128, inclusive. Pero ¿por qué no podemos tratar estos patrones de 8 bits como un número firmado, ya que el rango resultante es [-128,127], que es casi el mismo que el anterior.¿por qué el número de punto flotante IEEE calcula el exponente utilizando una forma sesgada?
Respuesta
El propósito del sesgo es que el exponente se almacene en el formulario sin signo, lo que hace que sea más fácil hacer comparaciones. De Wikipedia:
Mediante la disposición de los campos para el bit de signo está en la posición del bit más significativo , el exponente sesgado en el medio, entonces la mantisa en los mínimos bits significativos, el valor resultante voluntad ordenado correctamente, si es interpretado como un valor entero en coma flotante o . Esto permite comparaciones de alta velocidad de de los números de punto flotante utilizando hardware de punto fijo.
Así que, básicamente, un número de punto flotante es:
[sign] [unsigned exponent (aka exponent + bias)] [mantissa]
This website proporciona una excelente información acerca de por qué esto es bueno - en concreto, comparar las implementaciones de funciones de comparación de punto flotante.
Además, ninguna respuesta completa acerca de las rarezas de coma flotante puede pasar sin mencionar "What Every Computer Scientist Should Know About Floating-Point Arithmetic". Es largo, denso y un poco pesado en las matemáticas, pero es muy denso oro matemático (o algo así).
Suena como una excusa de un ingeniero electrónico pobre para mí ... –
@Pavel, todavía hay procesadores sin FPU, es decir. Brazos. Hacer al menos esta operación fácil de hacer en enteros hace que emular FPU sea más rápido. – liori
@liori los procesadores ARM recientes tienen FPU [1], pero, @Pavel, cuando la especificación de punto flotante IEEE-754 se acordó por primera vez en 1985, la mayoría de los procesadores * no *. Por ejemplo, el 8086 - ¡el x86 original! - solo tenía una FPU a través de un procesador de extensión opcional, el 8087 "x87". La FPU no se incluyó hasta el 80486, que se introdujo en 1989. [2] [1] http://www.arm.com/products/processors/technologies/vector-floating-point.php [2 ] http://en.wikipedia.org/wiki/Floating-point_unit#Add-on_FPUs –
- 1. ¿Cuál es el siguiente número de punto flotante normalizado después de (antes) un número de punto flotante normalizado f?
- 2. ¿Por qué una imagen (el Mandelbrot) estaría sesgada y envuelta?
- 3. Cómo comprobar si el compilador de C++ utiliza el estándar de punto flotante IEEE 754
- 4. Límites de punto flotante
- 5. Comprender los errores de representación de punto flotante; ¿Qué pasa con mi forma de pensar?
- 6. Convierte de punto flotante de IBM a estándar de coma flotante IEEE y viceversa - ¿C#?
- 7. Excepción de punto flotante C++ ¿Por qué y qué es?
- 8. Signo de un número de punto flotante
- 9. Formato del número de punto flotante
- 10. ¿Cómo no mostrar el número como exponente?
- 11. Si todos los bits son 0, ¿cuál es el valor del punto flotante IEEE?
- 12. ¿Cómo calcula CouchDB el número de revisión
- 13. números en coma flotante - número más cercano a 1.7
- 14. Tratando con excepciones de punto flotante
- 15. ¿Por qué usa un punto flotante en este ejemplo?
- 16. ¿Calcula el número de día de una marca de tiempo de Unix de forma matemática?
- 17. ¿Cómo se pueden imprimir los valores de punto flotante sin formato de mantisa/exponente?
- 18. Mostrar solamente el punto decimal si el componente de punto flotante no es .00 sprintf/printf
- 19. Número de dígitos significativos para un tipo de punto flotante
- 20. Reinterpretar el número de coma flotante al entero
- 21. ¿Por qué no hay tipos de punto flotante sin signo?
- 22. ¿Por qué el estándar IEEE 754 usa un sesgo 127?
- 23. Haskell: leer un número (entero o punto flotante)
- 24. ¿Qué tipo de webapps puede verse afectado de forma realista por el error flotante?
- 25. Encontrar el número entero más pequeño que no puede ser representado como un 754 IEEE-flotante de 32 bits
- 26. dobles - IEEE 754 alternativas
- 27. ¿Qué es exactamente una textura de punto flotante?
- 28. PI y precisión de un número de punto flotante
- 29. ¿Tiene JavaScript precisión de número de punto flotante doble?
- 30. ¿Cómo devolver el número de flotante con 2 dígitos después del punto decimal?
Una gran pregunta. También por qué está el signo estúpido, en lugar de tratar a la mantisa como complemento a dos, como lo hacen las personas normales. –
@Pavel Radzivilovsky: No se puede tratar la mantisa como complemento a dos, porque está normalizada con un alto implícito alto. ¿Cuál sería el beneficio del complemento de dos en este caso de todos modos? –