64 位按位且在 Javascript 中不起作用

64bit bitwise AND not working in Javascript

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

我已经尝试了在 (How to do bitwise AND in javascript on variables that are longer than 32 bit?) 给出的两种解决方案,但是 none 它与我正在使用的数字是准确的。我为此创建了一个 plunker 来演示这个问题。

Plunkerhttp://plnkr.co/edit/awFGFKxpkmwIPpnJ06lu?p=preview

任何 suggestion/help 都会有很大帮助。

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

您的示例代码涉及一个需要 60 位的数字。这意味着低 7 位(大约;它比这稍微复杂一点)已经消失,因此 AND8 的运算结果为零。

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

Performing bitwise operations on large values

找到

我有 browserify 库以直接在 angular 中使用它。 plunker 也更新了 browerify JS 并更正了 Result2 文本框中的答案。

Plunkerhttp://plnkr.co/edit/awFGFKxpkmwIPpnJ06lu?p=preview

-吉米特