2013-03-18 5 views
0

Мне нужно извлечь точный диапазон бит из существующего длинного, в частности мне нужны биты 51:12 от 64-битного значения.Диапазон битовой маски Java

Значение:

0x0000000415B2C01E 

Таким образом, значение битов 51:12 должно быть:

0x0000415B2C 

Я немного запутался, как на самом деле извлечь этот диапазон, или любой в этом отношении. Мне сказали, что просто сдвиг влево на 12 (значение < < 12), чтобы получить биты, мне нужно, но это дает мне значение:

0x415B2C01E000 

Теперь я мог бы быть полностью недоразумение, как немного сдвигая работы, но я не могу понять, как извлекать диапазоны бит. Я нашел много существующего материала, но теперь я все больше смущен.

Если кто-нибудь может мне помочь, это, безусловно, будет оценено.

Благодаря

+3

сдвиг вправо, а не сдвиг влево, что сделает 51:12 наименее значимые биты –

+2

Используйте '' & оператора. – 2013-03-18 15:56:35

ответ

3

сдвига и маски:

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

Должно быть 'answer = value >> 12 & 0x0000007FFFFFFFFF;' – Dave

+0

Просто билет, спасибо! – Tony

Смежные вопросы