IEEE 754
Le
Olivier Miakinen
Bonjour,
M'étant intéressé au format des nombres flottants pour écrire ma
fonction de conversion en Hexadécimal, je me suis amusé à décortiquer
le format IEEE 754 doublé précision.
Le résultat (temporaire) se trouve ici :
<http://www.miakinen.net/tmp/number.js>
<http://www.miakinen.net/tmp/toHexa>
Mes tests semblent montrer que cela fonctionne bien, malgré une
bidouille que j'ai dû faire à cause des erreurs d'arrondi dans le
calcul des log.
Attention cependant : je ne peux pas distinguer les deux zéros (+0 et
-0) ni les (2^53 - 2) valeurs différentes de NaN (Not a Number), j'ai
donc dû choisir. Pour 0 j'affiche l'encodage IEEE de +0, quand à NaN
j'affiche celui qui est juste à côté de +infini.
Il est amusant de noter que dans l'immense majorité des cas, lorsque le
premier chiffre non nul de la représentation hexa est un 1, alors tous
les chiffres suivants se retrouvent tels quels dans la représentation
IEEE 754 -- et réciproquement. Voir en particulier les multiples de 1/3
et 1/7, et les multiples de PI.
Cordialement,
--
Olivier Miakinen
Aidez Saburi à rester près de sa famille et poursuivre ses études
en France, signez la pétition :
http://www.fcpe94.ouvaton.org/artic..._article=9
M'étant intéressé au format des nombres flottants pour écrire ma
fonction de conversion en Hexadécimal, je me suis amusé à décortiquer
le format IEEE 754 doublé précision.
Le résultat (temporaire) se trouve ici :
<http://www.miakinen.net/tmp/number.js>
<http://www.miakinen.net/tmp/toHexa>
Mes tests semblent montrer que cela fonctionne bien, malgré une
bidouille que j'ai dû faire à cause des erreurs d'arrondi dans le
calcul des log.
Attention cependant : je ne peux pas distinguer les deux zéros (+0 et
-0) ni les (2^53 - 2) valeurs différentes de NaN (Not a Number), j'ai
donc dû choisir. Pour 0 j'affiche l'encodage IEEE de +0, quand à NaN
j'affiche celui qui est juste à côté de +infini.
Il est amusant de noter que dans l'immense majorité des cas, lorsque le
premier chiffre non nul de la représentation hexa est un 1, alors tous
les chiffres suivants se retrouvent tels quels dans la représentation
IEEE 754 -- et réciproquement. Voir en particulier les multiples de 1/3
et 1/7, et les multiples de PI.
Cordialement,
--
Olivier Miakinen
Aidez Saburi à rester près de sa famille et poursuivre ses études
en France, signez la pétition :
http://www.fcpe94.ouvaton.org/artic..._article=9

Poser une question


Et pourtant si : je viens de trouver un moyen de les distinguer.
Qui d'autre saura le faire ? YD peut-être ? Ou bien ASM ? À moins
que ce ne soit Francis ? Les paris sont ouverts !
--
Olivier Miakinen
Aidez Saburi à rester près de sa famille et poursuivre ses études
en France, signez la pétition :
http://www.fcpe94.ouvaton.org/artic..._article=9
Houlà là !
je n'ai jamais réussi à équilibrer une compta
ce n'est pas pour aller me casser la tête
avec des plus de moins que rien !
--
Stephane Moriaux et son [moins] vieux Mac
Lisez s.v.p. mon et puis mon http://www.merlyn.demon.co.uk/js-*.htm !
<QUOTE>
There are special values :-
The value NaN - Not-A-Number - is unequal to everything,
including itself; there is a function isNaN.
There are two non-finite numbers - plus and minus
Infinity; there is a function isFinite.
Plus and minus zero are representable and equal, but are
distinguishable by comparing reciprocals.
Denormals, where the exponent is lowest and the mantissa starts
with 0, have lessened proportional resolution; the lowest is about
4.94e-324.
</QUOTE>
X = +1/Infinity
Y = -1/Infinity
X == Y // true
1/X == 1/Y // false
1/X // Infinity
1/Y // -Infinity
1/(X*Y) // -Infinity
--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
Lisez svp mon
Pour calculer le jour de Paques, AFAIK les methodes de Zeller sont les
plis vites :
--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
Bravo ! 1/+0 = +Infinity et 1/-0 = -Infinity.
Il y a d'autres moyens plus compliqués, par exemple
Math.pow(+0,-1) = +Infinity et Math.pow(-0,-1) = -Infinity.
En revanche, il n'existe aucun moyen de distinguer les
9 007 199 254 740 990 variantes possibles de NaN.