2015-07-10 218 views
3

我已經看了Stack Overflow,並沒有完全找到答案。我有位掩碼值從0x00000000000000010x0200000000000000,,每個代表我的對象中可以修改的字段。修改後的字段將其相應的掩碼值按位「或」運算在一起,以便具有可稍後解釋的單個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 = 0b = 0x80000000,我想_bitwiseOr64的結果是0x80000000(未簽名,因爲我處理位掩碼這裏)。我沒有得到那個結果。誰能提供幫助?

+0

的問題是,js的只支持52個整數。這是因爲js數字是雙打和雙打有11位指數和52位尾數(其餘1位是符號位)。如果您需要表示一個64位數字,您可以做的最好的方法是使用兩個32位數字的數組。 – slebetman

+0

查看類型數組,如['Uint32Array'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array) – Bergi

回答