Comment représenter à virgule flottante binaire. IEEE
Similaire à virgule des nombres binaires peuvent avoir représenter flotteurs trop. Maintenant que j'ai lu, il peut y avoir des flotteurs de la sorte
0.5
:0.1
, 0.25
:0.01
, 0.125
:0.001
... et ainsi de suite. Mais alors, comment, par exemple, est de 0,1(en décimal), représenté en binaire?
Aussi, étant donné un nombre decimal float, comment convertir le nombre décimal équivalent, (étant donné qu'il n'est pas si simple).
Edit: Donc, je comprends que le mieux aurait été ; comment faire pour convertir un nombre decimal float binaire? Je comprends maintenant que l'on multiplie la partie décimale, jusqu'à ce qu'il devienne nul.
Maintenant, il est très possible que les deux floating points peuvent avoir le même droit de représentation?
Vous devez vous connecter pour publier un commentaire.
Donné combien de bits?
0.1 b:
Comme vous pouvez le voir c'est une approximation.
Chaque bit après la radix point représente 1/2^(position_after_bit_string).
Donc
0.0000001 = 1/2^7 = 0.0078125
Pseudocode:
Pour plus d'info Pourquoi pas des nombres décimaux être représenté exactement en binaire?
Une autre observation qui pourrait être utile. La "partie entière d'un nombre à virgule flottante est présent dans le fichier binaire en "normal", par exemple si la valeur est 25.7482 vous aurez les bits '11001' (25) en virgule flottante, avec les bits suivants correspond à la fraction (en fait le premier " 1 " n'est jamais stocké, il est implicite dans le format).
Si vous soustrayez de 25,0 à partir de ce numéro, et le multiplier par 10, vous obtenez 7.482, et par l'examen de la partie entière de la valeur, vous pouvez obtenir le premier chiffre fractionnaire, '7'.
Soustraire 7.0, multiplier par 10 donne 4.82 , ainsi le chiffre '4', et ainsi de suite. Ce processus, en théorie, une fin avec un résultat égal à zéro, car toutes les valeurs qui peuvent être exactement représenté en virgule flottante format ont une exacte représentation décimale; toutefois, qu '"exact" résultat pourrait avoir beaucoup plus de chiffres sont en fait raisonnable compte tenu de la précision de l'original flottant (et vous avez peut-être besoin de plus de précision à l'interne pour obtenir pleinement résultat exact, de toute façon - vous besoin pour assurer la multiplication par 10 ne génère pas une erreur d'arrondi).
Et, pour les nombres comme 6.432 e-200 ,cette méthode est réalisable, mais pas très efficace (vous devez être de générer 199 zéros avant le premier '6' émergé).