2010-10-19 6 views
3

J'essaie de convertir un nombre à virgule flottante basé sur l'IEEE en un nombre à virgule flottante MIL-STD 1750A.Conversion entre les normes à virgule flottante

Je joins le cahier des charges pour les deux: alt text

Je comprends comment décomposer le point flottant 12,375 au format IEEE selon le example on wikipedia.

Cependant, je ne sais pas si mon interprétation de la MIL-STD est correct.

12,375 = (12) b10 + (0,375) = b10 (1100) + b2 (0,011) = b2 (1100,011) b2 (1100,011) b2 = 0,1100011 x 2^4 => Exposant, E = 4.

4 normalisé complément à 2 est = (100) b2 = Exponent

par conséquent, une norme MIL-STD 1750A 32 bits nombre à virgule flottante est:

S=0, F=11000110000000000000000, E=00000100 

mon interprétation est correcte ci-dessus?

Pour -12.375, est-ce juste le bit de signe qui permute? i.e. .:

S=1, F=11000110000000000000000, E=00000100 

Ou est-ce quelque chose se produit avec froussard la partie de fraction?

Répondre

4

Le schéma ci-dessus est un peu trompeur, je pense. En format IEEE, pour passer du positif au négatif, il vous suffit de retourner le premier bit. Les trois bits restants peuvent être traités comme un nombre non signé. Dans le format MIL-STD, la mantisse est le numéro du complément à deux, alors que le premier bit indique le signe, les 23 bits restants ne restent pas identiques.

Ce que je reçois est

S=1, F=00111010000000000000000, E=00000100 
+0

il vous semble rendre la fraction 1100011 du complément de 2 => 0.011.101, mais les bits restants dans le composant de fraction sont encore des 0? – Seth

+3

Oui, pour prendre la négation du complément à deux, prenez le NON et ajoutez-en un: alors quand vous prenez le bitwise, vous vous retrouvez avec 16 1 à l'extrême droite, puis quand vous en ajoutez un, ils sont tous reportés. – Tristan

+0

+1 bien sûr. Merci. – Seth

Questions connexes