Java - сдвиг битов с целыми числами и байтами
Рассмотрим следующий код (где byteIndex - это int):
int bitNumber = b-(8*byteIndex);
bitMask = 0x8>>(byte)bitNumber;
Это генерирует ошибку
error: possible loss of precision
при компиляции (требуется байт, найдено int).
Код
int bitNumber = b-(8*byteIndex);
bitMask = 0x8>>2;
компилируется нормально.
В чем здесь проблема, и как мне исправить первый пример, чтобы разрешить сдвиг битов на значение int?
РЕДАКТИРОВАТЬ: После комментариев, вот более полный пример:
48) int byteIndex;
49) byte bitMask;
50) int bitNumber;
// assign value to byteIndex
67) bitNumber = b-(8*byteIndex);
68) bitMask = 0x8>>bitNumber;
и приведенная ошибка:
...MyClass.java:68: error: possible loss of precision
bitMask = 0x8>>bitNumber;
^
required: byte
found: int
1 error