如何以C语言存储价值?
这个问题在这里已经有了答案:
您需要计算该字节内的字节偏移量和位掩码。
代码:
void set_bit(char *buf, int bit, int val)
{
int byte = bit / 8;
char mask = 1 << (bit % 8);
if (val)
buf[byte] |= mask;
else
buf[byte] &= ~mask;
}
int get_bit(char *buf, int bit)
{
int byte = bit / 8;
char mask = 1 << (bit % 8);
return buf[byte] & mask ? 1 : 0;
}
示例:将位17设置为1.字节偏移量为17/8 = 2
。 位偏移量为17%8 = 1
。 位掩码是由位偏移量左移1产生的:结果为00000010
二进制。 按位或byte[2]
:所有位保持不变,除非屏蔽位为1。