2013-03-18 106 views
0

我需要從現有的long中提取確切範圍的位,特別是我需要從64位值的位51:12。Java位掩碼範圍

值是:

0x0000000415B2C01E 

所以位51:12的值應爲:

0x0000415B2C 

我有點困惑,如何實際提取範圍,或任何這個問題的範圍。有人告訴我,簡單地留下了12(價值< < 12)移動,以獲得我所需要的位,但給我的價值:

0x415B2C01E000 

現在,我可能會被完全誤解怎麼比特移位的作品,但是我無法理解如何提取位範圍。我發現了很多現有的東西,但現在我更加困惑了。

如果有人可以幫助我,它肯定會被讚賞。

感謝

+3

右移,不左移,這將使51:12最低顯著位 – 2013-03-18 15:56:31

+2

使用'&'操作。 – 2013-03-18 15:56:35

回答

3

移位和掩碼:

answer = value >> 12 & 0xFFFFFFFFFFF; 
+0

應該是'answer = value >> 12&0x0000007FFFFFFFFF;' – Dave 2013-03-18 16:05:18

+0

只是票,謝謝! – Tony 2013-03-18 16:14:10