Contexte
IEEE 754 Le format à virgule flottante double précision est un moyen de représenter des nombres réels avec 64 bits. Il ressemble à ceci:
![]()
Un nombre réel nest converti en a doublede la manière suivante:
- Le bit de signe
sest 0 si le nombre est positif, 1 sinon. - La valeur absolue de
nest représentée sous la forme2**y * 1.xxx, c'est -à- dire une puissance de 2 fois une base . - L'exposant
eesty(la puissance de 2) moins 1023. - La fraction
fest laxxxpartie (partie fractionnaire de la base), prenant les 52 bits les plus significatifs.
Inversement, un motif binaire (défini par signe s, exposant eet fraction f, chacun un entier) représente le nombre:
(s ? -1 : 1) * 2 ** (e - 1023) * (1 + f / (2 ** 52))
Défi
Étant donné un nombre réel n, affichez sa partie de fraction de 52 bits de la doublereprésentation nsous forme d'entier.
Cas de test
0.0 => 0
1.2 => 900719925474099 (hex 3333333333333)
3.1 => 2476979795053773 (hex 8cccccccccccd)
3.5 => 3377699720527872 (hex c000000000000)
10.0 => 1125899906842624 (hex 4000000000000)
1234567.0 => 798825262350336 (hex 2d68700000000)
1e-256 => 2258570371166019 (hex 8062864ac6f43)
1e+256 => 1495187628212028 (hex 54fdd7f73bf3c)
-0.0 => 0
-1.2 => 900719925474099 (hex 3333333333333)
-3.1 => 2476979795053773 (hex 8cccccccccccd)
-3.5 => 3377699720527872 (hex c000000000000)
-10.0 => 1125899906842624 (hex 4000000000000)
-1234567.0 => 798825262350336 (hex 2d68700000000)
-1e-256 => 2258570371166019 (hex 8062864ac6f43)
-1e+256 => 1495187628212028 (hex 54fdd7f73bf3c)
Vous pouvez vérifier d'autres nombres en utilisant cette référence C qui utilise des champs de bits et une union.
Notez que la réponse attendue est la même pour +net -npour n'importe quel nombre n.
Entrée et sortie
Des règles standard s'appliquent.
Format d'entrée accepté:
- Un nombre à virgule flottante, ayant au moins une
doubleprécision interne - Une représentation sous forme de chaîne du nombre en décimal (vous n'avez pas besoin de prendre en charge la notation scientifique, car vous pouvez utiliser
1000...00ou0.0000...01en entrée)
Pour la sortie, une erreur d'arrondi au bit le moins significatif est tolérable.
Condition gagnante
Il s'agit de code-golf , donc les octets les plus bas dans chaque langue gagnent.