位如何存储在数组中?

How does the bit store in the array?

在做作业时,我有一个关于位的问题。

如何在 int8_t 的数组中保存位?

以及如何访问这些位?

下面是一些示例代码

void someting_with_bits(int8_t bit_array[])
{
  //Do sometings...
}

如果有这样的功能,

当我调用 bit_array[0] 时,我是否 return 8 个长度位,如 11100011?

如果是这样,我如何访问 bit_array[0] 的第一位?

是的,它会像11000011一样保存在一个数组块中。

要访问指定的位,您需要对其进行移位,然后使用特殊掩码对其进行与运算。

例如访问bit_array[0]的最高位:

int8_t highest_bit = (bit_array[0] >> 7) & 0x1;

访问bit_array[0]的最高4位:

int8_t highest_4_bits = (bit_array[0] >> 4) & 0xf;

如果你想访问每个整数的个别位,你可以做一些位操作。 例如,如果你想检查一个整数的第 3 个最低有效位,并将它与 0x4(100) 一起检查。您也可以将您的 int 右移 2 次,然后将其与 0x1 进行 AND 运算。 例如,检查数组中索引为 3 的整数的第 5 个最低有效位:

bool theBit = (bit_array[3] >> 4) & 0x1;

当然可以用bitset。 http://www.cplusplus.com/reference/bitset/bitset/

例如访问 32 位整数的第 3 个最低有效位 (不要忘记包含位集 header):

int32_t number = 233;
std::bitset<32> bits(number);
std::cout << "The 3rd ls bit is: " << bits[2] << std::endl;