位如何存储在数组中?
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;
在做作业时,我有一个关于位的问题。
如何在 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;