Подтвердить что ты не робот

Как можно прочитать целое число за раз в Java?

Я хотел бы взять int как вход и вернуть k-й бит.

int getBit(int n, int k){
    return kth bit in n;
}

Как мне это сделать?

4b9b3361

Ответ 1

Использование побитовых операторов:

int getBit(int n, int k) {
    return (n >> k) & 1;
}

Объяснение (в битах):

n
100010101011101010 (example)
n >> 5
000001000101010111 (all bits are moved over 5 spots, therefore
&                   the bit you want is at the end)
000000000000000001 (0 means it will always be 0,
=                   1 means that it will keep the old value)
1

Ответ 2

return (n >> k) & 1;

Здесь n >> k сдвигает k -th бит в наименее значимое положение, а & 1 маскирует все остальное.

Ответ 3

Если младшим значащим битом является число бит 0:

return (n>>k)&1;

Ответ 4

или используйте:

boolean getBit(int n, int k) {
    return (((n >> k) & 1) == 1 ? true:false);
}

если вы хотите иметь значение boolean

Ответ 5

Вы также можете использовать для этого свойство модуля. Если ваш номер даже младший значащий бит равен нулю, в противном случае (нечетный) - один.

return (n>>k)%2;