64位按位并且不能在Javascript中工作

时间:2015-03-27 13:16:24

标签: javascript angularjs bitwise-operators

我正在尝试对Javascript中的长数字进行按位和运算。

我已经尝试了(How to do bitwise AND in javascript on variables that are longer than 32 bit?)给出的解决方案,但没有一个与我正在使用的数字一致。我已经创建了一个相同的plunker来证明这个问题。

Plunker http://plnkr.co/edit/awFGFKxpkmwIPpnJ06lu?p=preview

任何建议/帮助都会有很大的帮助。

2 个答案:

答案 0 :(得分:5)

JavaScript编号是64位浮点值。格式是不能精确表示需要超过53位的整数。没有提供完整替代号码表示的库的帮助,就无法解决该问题。一旦在程序运行时将源代码中表示为数字常量的值转换为数字,就已经太晚了。

您的示例代码涉及一个需要60位的数字。这意味着低7位(左右;它比那更复杂)已经消失,因此AND 8操作变为零。

答案 1 :(得分:1)

我找到了一个正确给出长数字结果的库。它是Long.js。

Performing bitwise operations on large values

找到它

我已经浏览化库直接在角度使用它。 该plunker还使用browerify JS进行更新,并在Result2文本框中更正了。

Plunker http://plnkr.co/edit/awFGFKxpkmwIPpnJ06lu?p=preview

-Jimit