給定的值:0x9e9090ab(10011110100100001001000010101011)落下最後一位
我想分析的價值忽略第32位,這樣我最終有: 0x1e9090ab(00011110100100001001000010101011)
我嘗試在做這個通過位掩碼(0x9e9090ab &〜0x10000000)似乎沒有工作,並導致一個帶符號的負數。
不知道我在做什麼錯在這裏,所以任何幫助,將不勝感激。
給定的值:0x9e9090ab(10011110100100001001000010101011)落下最後一位
我想分析的價值忽略第32位,這樣我最終有: 0x1e9090ab(00011110100100001001000010101011)
我嘗試在做這個通過位掩碼(0x9e9090ab &〜0x10000000)似乎沒有工作,並導致一個帶符號的負數。
不知道我在做什麼錯在這裏,所以任何幫助,將不勝感激。
您需要使用位掩碼~0x80000000
而不是~0x10000000
,因爲0x10000000
指的是第29位。例如:
var result = 0x9e9090ab & ~0x80000000;
對我來說更容易想到是這樣的:
0x9e9090ab & 0x7FFFFFFF
您可以比較使用節點:
> (0xFFFFFFFF).toString(2)
'11111111111111111111111111111111'
> (0x7FFFFFFF).toString(2)
'1111111111111111111111111111111'
我想我可以很容易地(0x9e9090ab << 1) > > 1,但跳躍地有人有更好的解決方案。 – SS44
它必須是0x80000000等而不是0x10000000 –