JavaScript实现可以使用64位整数吗?

时间:2014-07-13 10:36:49

标签: javascript 64-bit

就语言定义而言,JavaScript编号是64位浮点。

(除了使用32位整数的按位运算。我认为即使在64位CPU上也要求后者,例如1 << 33即使CPU可以做得更好,也必须为2兼容性。)

但是,如果编译器可以证明一个数字仅用作整数,那么它可能更愿意为了效率而实现它,例如

for (var i = 0; i < Math.pow(2, 40); i++)
    console.log(i)

显然,最好用整数来实现它,在这种情况下,必须使用64位整数 来保证正确性。

现在考虑一下这个案例:

for (var i = 0; i < Math.pow(2, 60); i++)
    console.log(i)

如果使用浮点数实现,则上述操作将失败,因为浮点不能准确表示大于53位的整数。

如果使用64位整数实现,它可以正常工作(除了不方便的长时间运行时)。

是否允许JavaScript编译器(通过标准字母和与实际现有代码的兼容性)在这种情况下使用64位整数,它们提供的结果与浮点不同但效果更好?

同样,如果JavaScript编译器提供的数组超过40亿个元素,是否允许将数组长度和索引实现为64位整数?

1 个答案:

答案 0 :(得分:1)

MDN information about UInt64: 由于 JavaScript当前不包含对64位整数值的标准支持,因此js-ctypes提供了Int64和UInt64对象,使您可以使用需要(或可能需要)的C函数和数据使用64位数据类型表示的数据。

使用UInt64对象创建和操作64位无符号整数。