所以说我有一个字节数组,并且我有一个函数检查字节数组的第n个最低有效位索引是1还是0.如果该位是1且为假,该函数返回true如果该位为0.字节数组的最低有效位被定义为字节数组的第0个索引中的最后一个有效位,并且字节数组的最高有效位被定义为(...中的最高有效位) byte array.length - 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;
这样做的最佳方式是什么?
谢谢!
答案 0 :(得分:18)
您可以使用此方法:
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位置。