Есть ли способ получить I (я изменения) Lsb из INT?

Я работаю над проектом в Java недавно, и я хотел бы обработать биты целого числа, чтобы я мог проверить I lsb числа. Я нашел много подходов, но ничего, что не может справиться должным образом...

пример

ключ = 4ключ 4 в двоичном есть 100Я хотел бы каким-то образом извлечь третий LSB из 4 который 1, Есть ли алгоритм, который может это сделать?

3 ответа

Решение

Использование сдвига битов и побитового AND: (индексируется с 0)

int getBit(int number, int index)
{
  return (number >> index) & 1;
}

getBit(4, 2) возвращает 1.

Вы также можете использовать % 2 вместо & 1,

Сделайте битовую маску и сдвиньте:

int bitmask = 4;

int extractedBit = (i & BIT3) >> 2; // is now the 3rd lsb.

Хорошо, попробуй это. Так как 3-й разряд младшего разряда будет основан на значении единицы измерения числа, независимо от того, насколько оно велико, значение будет равно 0, если оно будет меньше четырех или больше 7. Так (0,1,2,3)U(8,9) в месте единиц дать 3-й LSB как 0, (4,5,6,7) дать 1,

int key = 12000;
int i=4;
if((key/(10^(i-1))%10 < 4 || (key/(10^(i-1))%10 >7)
    lsb3 = 0;
else
    lsb3 = 1;
Другие вопросы по тегам