Проверка отдельных битов в массиве байтов в Java?

Итак, скажем, у меня есть массив байтов, и у меня есть функция, которая проверяет, является ли n-й наименее значимый битовый индекс массива байтов 1 или 0. Функция возвращает true, если бит равен 1, и false, если бит равен 0. Наименее значимый бит массива байтов определяется как последний значимый бит в 0-м индексе массива байтов, а наиболее значимый бит массива байтов определяется как наиболее значимый бит в массиве (byte.длина-1) - й индекс байта матрица.

например,

byte[] myArray = new byte[2];
byte[0] = 0b01111111;
byte[1] = 0b00001010;

тел.:

myFunction(0) = true;
myFunction(1) = true;
myFunction(7) = false;
myFunction(8) = false;
myFunction(9) = true;
myFunction(10) = false;
myFunction(11) = true;

каков наилучший способ сделать это?

спасибо!

1 ответов


вы можете использовать этот метод:

public boolean isSet(byte[] arr, int bit) {
    int index = bit / 8;  // Get the index of the array for the byte with this bit
    int bitPosition = bit % 8;  // Position of this bit in a byte

    return (arr[index] >> bitPosition & 1) == 1;
}

bit % 8 - битовая позиция относительно byte.
arr[index] >> bit % 8 перемещает бит в index бит 0 позиций.