Я пытаюсь использовать int для представления значения регистра.Мне нужны различные части числа (в его двоичной форме), чтобы установить состояние для линий управления и т. Д.
Мой код работает нормально, пока я не доберусь до номера 4096, в котором мои границы перестают себя вести.
мои границы определены следующим образом:
bit 1 to bit 2, bit 3- bit 6, 7-11, 12-13, 14-n
Я использую следующий код для преобразования битов границ в целые числа:
public int getNToKBits(int leftMostBit, int rightMostBit){
int subBits = (((1 << leftMostBit) - 1) & (value >> (rightMostBit - 1)));
return subBits;
}
, но когда я пытаюсь разбить число 4096 наэти границы я получаю следующим образом:
b: 00, 10, 10000, 0000, 00
d: 0, 2, 64, 0, 0
-Я знаю, недостаточно битов, чтобы сделать 64 !!
то, что я ожидаю, это
b: 00, 10, 00000, 0000, 00
d: 0, 2, 0, 0, 0
Как и ожидалось, число меньше 4096. Возможно, это изменение в том, как java обрабатывает числа больше 4096?