我已經看了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