Par exemple, pour le float tapez en c, selon la spécification IEEE à virgule flottante, il y a 8 bits utilisés pour la fraction déposée, et il est calculé comme premier pris ces 8 bits et traduit en nombre non signé, puis moins le BIASE, qui est 2^7 - 1 = 127, et le résultat est un exposant va de -127 à 128 inclus. Mais pourquoi ne pouvons-nous pas traiter ce motif de 8 bits comme un nombre signé, puisque la plage résultante est [-128,127], ce qui est presque la même chose que la précédente.Pourquoi le nombre à virgule flottante IEEE calcule l'exposant en utilisant un formulaire biaisé?
Répondre
Le but de la polarisation est que l'exposant soit stocké sous la forme non signée, facilitant ainsi les comparaisons. De Wikipedia:
En disposant les champs de sorte que le signe bit est le bit le plus significatif position, l'exposant biaisée dans le milieu , alors la mantisse dans les moindres bits significatifs, la valeur résultante volonté ordonné correctement, que ce soit interprété comme une virgule flottante ou valeur entière. Cela permet des comparaisons à grande vitesse des nombres à virgule flottante en utilisant un matériel à point fixe.
Donc, fondamentalement, un nombre à virgule flottante est:
[sign] [unsigned exponent (aka exponent + bias)] [mantissa]
This website fournit d'excellentes informations sur les raisons de ce qui est bon - en particulier, comparez les mises en œuvre des fonctions de comparaison à virgule flottante.
En outre, aucune réponse complète sur les bizarreries à virgule flottante peut aller sans mentionner "What Every Computer Scientist Should Know About Floating-Point Arithmetic". C'est long, dense et un peu lourd sur les maths, mais il est dense mathématique d'or (ou quelque chose comme ça).
Semble comme une excuse d'un ingénieur électronique pauvres pour moi ... –
@Pavel, il ya encore des processeurs sans FPU, f.e. Bras. Rendre au moins cette opération facile à faire sur les entiers rend l'émulation FPU plus rapide. – liori
@liori récents processeurs ARM ont FPUs [1], mais, @Pavel, lorsque la spécification à virgule flottante IEEE-754 a été acceptée en 1985, la plupart des processeurs * n'ont pas *. Par exemple, le 8086 - l'original x86! - seulement eu une FPU via un processeur d'extension en option, le 8087 "x87". Le FPU n'a été inclus que jusqu'au 80486, qui a été introduit 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. Décimale à virgule flottante
- 2. Comment convertir le format à virgule flottante simple précision IEEE 754 en décimal?
- 3. Comment assigner un nombre à un registre à virgule flottante en utilisant l'assemblage sparc?
- 4. opérations à virgule flottante
- 5. Comment faire un test d'égalité pour le virgule flottante IEEE 80bit?
- 6. pourquoi Exception de virgule flottante?
- 7. précision à virgule flottante
- 8. calculer des valeurs exprimables max et min pour le repérage de nombre à virgule flottante
- 9. Le plus grand nombre à virgule flottante négative représentable
- 10. Imprimer le nombre à virgule flottante arrondi dans MIPS
- 11. Conversion entre les normes à virgule flottante
- 12. Valeurs Flash à virgule flottante et à virgule flottante
- 13. Virgule flottante en forme hexadécimale
- 14. en virgule flottante Limitations
- 15. Pourquoi l'échange d'octets à virgule flottante est-il différent de l'échange d'octets sur un nombre entier?
- 16. erreurs à virgule flottante ruby
- 17. Représentation numérique à virgule flottante dans Actionscript?
- 18. Générateur de nombres aléatoires non biaisé utilisant un générateur biaisé
- 19. pile à virgule flottante manutention avec des exceptions en virgule flottante sous tension
- 20. Comment calculer la ration d'aspect d'un nombre à virgule flottante
- 21. Partie gauche d'un nombre à virgule flottante dans SQL Server
- 22. Éviter l'arithmétique en virgule flottante
- 23. comparaison à virgule flottante en STL, BOOST
- 24. calculs à virgule flottante fixe en Java
- 25. Détection d'arrondi à virgule flottante
- 26. Mathématiques à virgule flottante incorrecte?
- 27. Comment retourner un nombre à virgule flottante avec un nombre défini de décimales?
- 28. Confusion avec des nombres à virgule flottante
- 29. comportement flush-to-zero en arithmétique en virgule flottante
- 30. Arrondi de virgule flottante (en java)
Bonne question. Aussi pourquoi il y a le bit de signe stupide, au lieu de traiter la mantisse comme un complément à deux, comme le font les gens normaux. –
@Pavel Radzivilovsky: Vous ne pouvez pas traiter la mantisse comme un complément à deux, car elle est normalisée avec un bit haut implicite. Quel serait l'avantage du complément à deux dans ce cas de toute façon? –