2013-03-18 72 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