bits数组到字节 - java

时间:2014-02-28 02:32:34

标签: java arrays byte bit

如何在bytes []数组中存储一系列位? 更详细:我有一个数组

byte[] bytes;

如何在数组的单个字节中存储单个值(0和1)? 我正在寻找类似的东西:

bit[] bits = new bit[8];
bits[0] = 1;
bits[3] = 1;
bytes[3] = bits[];

我希望这是有道理的。感谢

2 个答案:

答案 0 :(得分:1)

void setBit(int[] array, int index, boolean value) {
    int x = index / 32;
    int y = index % 32;
    int mask = 1 << y;
    if (value) {
        array[x] |= mask;
    }
    else {
        array[x] &= (0xFFFFFFFF ^ mask);
    }
}

boolean getBit(int[] array, int index) {
    int x = index / 32;
    int y = index % 32;
    int mask = 1 << y;
    return (array[x] & mask) != 0;
}

答案 1 :(得分:0)

布尔值可用于表示一个位,但它会占用更多内存。您可以使用bitwise运算符来节省内存,这是一个示例:

int n = 0;
n |= 1 << 1; // Set bit 1 to true, n is 2
n |= 1 << 3; // Set bit 3 to true, n is 10
bool b0 = n & (1 << 3) > 0; // True
n &= 1 << 3; // Set bit 3 to false, n is 2
bool b1 = n & (1 << 1) > 0; // True
bool b2 = n & (1 << 2) > 0; // False
bool b3 = n & (1 << 3) > 0; // False