Есть ли способ получить 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;