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

Ответы на вопрос(3)

Ваш ответ на вопрос