我查阅了Stack Overflow,但并没有找到这个问题的确切答案。我有一些位掩码值,从0x0000000000000001
到0x0200000000000000
,每个值代表对象中可以修改的一个字段。修改后的字段会将其对应的掩码值按位或运算起来,生成一个单独的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 = 0
且b = 0x80000000
,我希望_bitwiseOr64的结果为0x80000000
(无符号值,因为我在处理位掩码)。但是我没有得到这个结果。是否有人可以提供帮助?
Uint32Array
。 - Bergi