Pourquoi l'exposant dans le flotteur est déplacé de 127? Eh bien, la vraie question est: quel est l'avantage d'une telle notation par rapport à la notation de complément à 2?Exposant dans IEEE 754
Répondre
Étant donné que l'exposant tel qu'il est stocké n'est pas signé, il est possible d'utiliser des instructions entières pour comparer des valeurs à virgule flottante. la valeur en virgule flottante entière peut être traitée comme une valeur entière d'entier signée à des fins de comparaison (pas deux fois).
l'exposant dans un flotteur 32 bits est constitué de 8 bits, mais sans un bit de signe. Donc, la plage est effectivement [0; 255]. Pour représenter les nombres < 2^0, cette plage est décalée de 127, devenant [-127; 128].
De cette façon, très petits nombres peuvent être représentés de façon très précise. Avec une plage [0; 255], les petits nombres doivent être représentés par 2^0 * 0.mantissa
avec beaucoup de zéros dans la mantisse. Mais avec une gamme [-127; 128], les petits nombres sont plus précis car ils peuvent être représentés comme 2^-126 * 0.mantissa
(avec moins de zéros inutiles dans la mantisse). J'espère que vous avez compris.
Je crois qu'il demande pourquoi un offset est utilisé à la place, disons, du complément à 2. –
Désolé, je ne savais pas ce que U2 voulait dire. – AndiDog
Hmmm J'ai trouvé quelque part le nom "U2" notation, et je pensais que c'est une abréviation: | Maintenant que je le google, je pense que c'était une sorte d'erreur. Obvoulyly je pensais à la notation du complément à 2. –
Juste pour corriger certaines informations erronées: c'est 2^n * 1.mantissa
, le 1 devant la fraction est implicitement stocké.
Oui, c'est 1.mantissa. –
Avez-vous déprécié ma réponse? Ce n'est pas de la désinformation. L'un n'est implicitement stocké que pour les exposants> -126, mais zéro est implicitement stocké pour -126. C'est ce qu'on appelle "nombre dénormalisé". – AndiDog
Je n'ai pas déprécié votre réponse, mais votre réponse est encore fondamentalement trompeuse/incorrecte. Vous mentionnez 2^-126 * 0.mantissa, mais si l'exposant est -126 alors l'exposant + bias = 1 donc ce n'est pas un nombre dénormalisé, donc 1 est implicitement stocké.De plus, vous ne mentionnez que les «petits nombres», alors où est la coupure? –
Notez qu'il existe une légère différence dans la plage représentable pour l'exposant, entre le biais et le complément à 2. La norme IEEE prend en charge les exposants dans la plage de (-127 à +128), alors que si elle était complémentaire de 2, elle serait (-128 à +127). Je ne connais pas vraiment la raison pour laquelle la norme choisit le biais, mais les membres du comité ont peut-être pensé qu'il serait plus utile d'autoriser des chiffres extrêmement élevés plutôt que des chiffres extrêmement petits.
La norme IEEE prend en charge les exposants à simple précision de -126 à +127; les codages d'exposant qui devraient normalement correspondre à -127 et +128 ont des significations spéciales (zéros et dénormaux, infinis et NaN). –
@Stephen Canon, en réponse à YSAP de réponse (désolé, cela aurait dû être un suivi commentaire à ma réponse, mais la réponse initiale a été entré en tant qu'utilisateur non enregistré, donc je ne peux pas vraiment encore).
Stephen, évidemment vous avez raison, la plage d'exposant que j'ai mentionnée est incorrecte, mais l'esprit de la réponse s'applique toujours. En supposant que si c'était le complément 2 au lieu de la valeur biaisée, et en supposant que les valeurs 0x00 et 0xFF seraient toujours des valeurs spéciales, alors les exposants biaisés permettent des nombres (2x) plus grands que les exposants du complément 2.
Oh, je suis entièrement d'accord. Ici, ayez un représentant pour que vous puissiez commenter =) –
- 1. AIDE - IEEE - 754 - extrait, normalisé, NAN, etc
- 2. iPhone SDK: NSString NSNumber IEEE-754
- 3. Convertir ieee 754 flotteur ensorceler avec c - printf
- 4. Comment convertir le format à virgule flottante simple précision IEEE 754 en décimal?
- 5. Comment obtenir la représentation binaire IEEE 754 d'un flottant en C#
- 6. IEEE-754 Double (virgule flottante 64 bits) vs longue (entier de 64 bits) Revisited
- 7. Convertir une chaîne avec une représentation hexadécimale d'un double IEEE-754 en variable numérique JavaScript
- 8. Comment puis-je convertir quatre caractères en un flottant IEEE-754 32 bits en Perl?
- 9. Comment lire les nombres à double précision 64 bits IEEE Standard 754 à partir de données binaires?
- 10. Schéma: En utilisant seulement R6RS, comment puis-je déterminer la mantisse d'un nombre flottant et exposant
- 11. IEEE Double Precision
- 12. Normes logicielles IEEE
- 13. java.math.BigInteger pow (exposant) question
- 14. wcf exposant des génériques
- 15. Exposant .NET Currency ISO_4217
- 16. JSDoc dans Visual Studio exposant 2008
- 17. exposant différence de points flottants
- 18. Avec IEEE-754, 0 <ABS (const) <1, est-ce que (x/const) * const garantit de renvoyer des résultats distincts pour des valeurs distinctes de X?
- 19. Exposant/indice dans le lien hypertexte dans WPF
- 20. Comment créer un objet Crypt :: RSA à partir d'un module, d'un exposant et d'un exposant privé?
- 21. WPF UserControl exposant des listitems internes
- 22. Marque enregistrée «®» en exposant dans le menu de sélection
- 23. texte en exposant dans le regroupement de ressources en java
- 24. dans C# comment affecter un exposant à une équation?
- 25. Conversion de Double en chiffres et exposant
- 26. indice et exposant pour le même élément
- 27. Pourquoi le nombre à virgule flottante IEEE calcule l'exposant en utilisant un formulaire biaisé?
- 28. Algorithme ou code pour la notation scientifique float to base 2 (IEEE 32 bits) en C++?
- 29. Convert MBF simple et double à la norme IEEE
- 30. Mise en forme du texte en exposant pour NSIS
Cela ne fonctionnerait-il pas de la même manière si nous utilisions la notation complémentaire à 2? –
Ce n'est pas tout à fait vrai. Deux valeurs à virgule flottante négatives ne se comparent pas correctement en tant qu'entiers signés. Tous les autres cas fonctionnent correctement. –
@Stephen: Oui, c'est vrai, les nombres à virgule flottante peuvent être comparés comme des entiers de magnitude signés, pas deux entiers de compléments, le bit de signe nécessite un traitement spécial des cas. –