我正在尝试对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
任何建议/帮助都会有很大的帮助。
答案 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