我已经看了Stack Overflow,并没有完全找到答案。我有位掩码值从0x0000000000000001
到0x0200000000000000,
,每个代表我的对象中可以修改的字段。修改后的字段将其相应的掩码值按位“或”运算在一起,以便具有可稍后解释的单个64位值。但我有困难,因为Javascript按位运算符将操作数转换为32位有符号值。我试图编写无符号的64位无符号方法来模仿按位OR和按位AND,但遇到了困难。我的第一个尝试是:无符号64位按位与/或在Javascript中
_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
(未签名,因为我处理位掩码这里)。我没有得到那个结果。谁能提供帮助?
的问题是,js的只支持52个整数。这是因为js数字是双打和双打有11位指数和52位尾数(其余1位是符号位)。如果您需要表示一个64位数字,您可以做的最好的方法是使用两个32位数字的数组。 – slebetman
查看类型数组,如['Uint32Array'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array) – Bergi