2010-02-14 10 views
2

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

6

É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).

+0

Cela ne fonctionnerait-il pas de la même manière si nous utilisions la notation complémentaire à 2? –

+0

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. –

+0

@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. –

0

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.

+0

Je crois qu'il demande pourquoi un offset est utilisé à la place, disons, du complément à 2. –

+0

Désolé, je ne savais pas ce que U2 voulait dire. – AndiDog

+0

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. –

1

Juste pour corriger certaines informations erronées: c'est 2^n * 1.mantissa, le 1 devant la fraction est implicitement stocké.

+0

Oui, c'est 1.mantissa. –

+0

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

+0

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? –

1

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.

+0

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). –

1

@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.

+0

Oh, je suis entièrement d'accord. Ici, ayez un représentant pour que vous puissiez commenter =) –

Questions connexes