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

3

我查阅了Stack Overflow,但并没有找到这个问题的确切答案。我有一些位掩码值,从0x00000000000000010x0200000000000000,每个值代表对象中可以修改的一个字段。修改后的字段会将其对应的掩码值按位或运算起来,生成一个单独的64位值,稍后可以进行解释。但是,我遇到了困难,因为Javascript位运算符将操作数转换为32位有符号值。我试图编写无符号64位方法来模仿位或和位与,但是遇到了困难。我的第一次尝试是:

    _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(无符号值,因为我在处理位掩码)。但是我没有得到这个结果。是否有人可以提供帮助?

问题在于js仅支持52位整数。这是因为js数字是双精度浮点数,双精度浮点数具有11位指数和52位尾数(剩余的1位是符号位)。如果您需要表示64位数字,则最好的方法是使用两个32位数字的数组。 - slebetman
请查看类型化数组,例如Uint32Array - Bergi
1个回答

4

如果这个回答解决了你的问题,请接受它作为答案。 - Peyman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接