2015-12-05 1 views
0

Les nombres à virgule flottante IEEE 754 peuvent-ils représenter exactement la même valeur avec des configurations à plusieurs bits?Les nombres à virgule flottante IEEE 754 peuvent-ils représenter exactement la même valeur avec plusieurs combinaisons de bits?

Par exemple:
128 exp 3 == 1024,0
256 exp 2 == 1024,0
1024 exp 0 == 1024,0

Est-ce que la norme IEEE 754 envisager différents arrangements de bits pour être égaux en valeur lorsque comparé, tant que la valeur nette semble finalement être la même? Je travaille sur des algorithmes de compression personnalisés, et il serait très utile de savoir s'il y a plusieurs façons de représenter la même valeur (pour améliorer la compression).

+2

Comment considérez-vous 0 et -0? Ils représentent tous les deux zéro, et ont donc, en un sens, la même valeur, mais ils ont des bits de signe différents. –

+0

@PatriciaShanahan Voilà un autre bon exemple d'arrangements à plusieurs bits pour la même valeur. Merci d'avoir fait remarquer cela. On dirait que j'ai besoin de faire attention aux NaN et aux zéros pour les nombres à virgule flottante binaire, ainsi que d'autres redondances pour les nombres décimaux à virgule flottante. – Giffyguy

+2

Notez que 1/+ 0 est l'infini positif alors que 1/-0 est l'infini négatif. Le remplacement de l'un par l'autre est détectable par l'arithmétique et les comparaisons «ordinaires». – tmyklebu

Répondre

2

habituel binaire IEEE 754 types à virgule flottante n'ont pas le genre de redondance que vous faites référence. Les nombres sont toujours normalisés de sorte que le significand est compris entre 1.0 et 2.0 (ou entre 1.0 et 10.0 en binaire). Ils ont des choses comme zéro positif et zéro négatif, et beaucoup de NaN qui ont différentes représentations internes.

Cependant, la nouvelle décimal IEEE 754 types à virgule flottante ont cette redondance: Un certain nombre comme 3.14 peut être représenté comme 314 avec l'exposant 2; 3140 avec l'exposant 3; avec l'exposant 4; etc.