JavaScript 64位二进制和十进制转换

时间:2013-10-01 17:38:36

标签: javascript binary 64-bit

首先是一些背景:

我们知道JavaScript数字是64位值,但并非所有64位都可用于表示整数。因此JavaScript不能代表所有2^64个数字。

但它可以represent all the 2^52整数。

所以简单的问题是:是否绝对不可能进行64位二进制到十进制转换?或者有一些黑客攻击。

此外,这有点令人困惑,因为我不明白发生了什么......

>>> str_64_1s = '1111111111111111111111111111111111111111111111111111111111111111';
>>> d = parseInt(str_64_1s, 2)
18446744073709552000
>>> d.toString(2)
"10000000000000000000000000000000000000000000000000000000000000000"   // 1 one + 64 zeros
>>> parseInt(d.toString(2), 2)
18446744073709552000
>>> parseInt(d.toString(2), 2) === d
true
Math.pow(2, 64) == d
true

一些相关的讨论:

0 个答案:

没有答案