2017-06-17 34 views
2

給定的值:0x9e9090ab(10011110100100001001000010101011)落下最後一位

我想分析的價值忽略第32位,這樣我最終有: 0x1e9090ab(00011110100100001001000010101011)

我嘗試在做這個通過位掩碼(0x9e9090ab &〜0x10000000)似乎沒有工作,並導致一個帶符號的負數。

不知道我在做什麼錯在這裏,所以任何幫助,將不勝感激。

+1

我想我可以很容易地(0x9e9090ab << 1) > > 1,但跳躍地有人有更好的解決方案。 – SS44

+2

它必須是0x80000000等而不是0x10000000 –

回答

1

您需要使用位掩碼~0x80000000而不是~0x10000000,因爲0x10000000指的是第29位。例如:

var result = 0x9e9090ab & ~0x80000000; 
0

對我來說更容易想到是這樣的:

0x9e9090ab & 0x7FFFFFFF

您可以比較使用節點:

> (0xFFFFFFFF).toString(2) 
'11111111111111111111111111111111' 
> (0x7FFFFFFF).toString(2) 
'1111111111111111111111111111111'