fundo
O formato de ponto flutuante de precisão dupla IEEE 754 é uma maneira de representar números reais com 64 bits. Parece o seguinte:
![]()
Um número real né convertido doubleem da da seguinte maneira:
- O bit do sinal
sé 0 se o número for positivo, 1 caso contrário. - O valor absoluto de
né representado na forma2**y * 1.xxx, ou seja, uma potência de 2 vezes a base . - O expoente
eéy(a potência de 2) menos 1023. - A fração
fé axxxparte (parte fracionária da base), levando os 52 bits mais significativos.
Por outro lado, um padrão de bits (definido por sinal s, expoente ee fração f, cada um inteiro) representa o número:
(s ? -1 : 1) * 2 ** (e - 1023) * (1 + f / (2 ** 52))
Desafio
Dado um número real n, imprima sua parte da fração de 52 bits da doublerepresentação ncomo um número inteiro.
Casos de teste
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)
Você pode verificar outros números usando esta referência C, que usa campos de bits e uma união.
Observe que a resposta esperada é a mesma para +ne -npara qualquer número n.
Entrada e saída
Aplicam-se regras padrão.
Formato de entrada aceito:
- Um número de ponto flutuante, pelo menos com
doubleprecisão internamente - Uma representação em seqüência do número em decimal (você não precisa suportar notação científica, pois pode usar
1000...00ou0.0000...01como entrada)
Para saída, um erro de arredondamento no bit menos significativo é tolerável.
Condição vencedora
Isso é código-golfe , então os bytes mais baixos em cada idioma vencem.