Javascript中的无符号64位按位AND / OR

时间:2015-07-10 04:07:01

标签: javascript bitwise-operators

我查看了Stack Overflow并且还没有找到答案。我的位掩码值从0x00000000000000010x0200000000000000,,每个值表示我的对象中可以修改的字段。修改后的字段将其对应的掩码值按位或逐一运算,以具有可在以后解释的单个64位值。但是我遇到了困难,因为Javascript按位运算符将操作数转换为32位有符号值。我试图写无符号的64位无符号方法来模仿按位OR和按位AND,但遇到了困难。我的第一次尝试是:

    _bitwiseOr64: function(a, b) {
         var aHi = (a >> 32);
         var aLo = (a & 0xffffffff);
         var bHi = (b >> 32);
         var bLo = (b & 0xffffffff);
         return (((aHi | bHi) << 32) + (aLo | bLo));
    }

如果a = 0b = 0x80000000,我希望_bitwiseOr64的结果为0x80000000(无符号,因为我在这里处理位掩码)。我没有得到那个结果。有人可以提供帮助吗?

1 个答案:

答案 0 :(得分:3)

看看这个图书馆:http://google.github.io/closure-library/api/class_goog_math_Long.html

它们具有多个按位功能,如add(other)和/或其他支持64位的功能。

对于Node.JS,您可以使用Long.js