Java位掩码范围

Java位掩码范围,java,bit-manipulation,bit-shift,bits,Java,Bit Manipulation,Bit Shift,Bits,我需要从现有的long中提取精确的位范围,特别是从64位值中提取51:12位 该值为: 0x0000000415B2C01E 因此,位51:12的值应为: 0x0000415B2C 我有点困惑,究竟如何提取那个范围,或者任何范围。我被告知只需左移12(值shift和mask: answer = value >> 12 & 0xFFFFFFFFFFF; 移位和遮罩: answer = value >> 12 & 0xFFFFFFFFFFF; 右移,而

我需要从现有的long中提取精确的位范围,特别是从64位值中提取51:12位

该值为:

0x0000000415B2C01E
因此,位51:12的值应为:

0x0000415B2C
我有点困惑,究竟如何提取那个范围,或者任何范围。我被告知只需左移12(值shift和mask:

answer = value >> 12 & 0xFFFFFFFFFFF;
移位和遮罩:

answer = value >> 12 & 0xFFFFFFFFFFF;

右移,而不是左移,将使51:12成为最低有效位右移,而不是左移,将使51:12成为最低有效位应为
answer=value>>12&0x0000007fffffff;
应为
answer=value>>12&0x0000007fffffff;