提取字节中的某一位,num为要提取的字节,n为要提取字节中的第n位,返回置位第n位的值
// 提取 uint8_t 数值的第 n 位(索引从 0 开始,最低位为0)
unsigned char get_bit(unsigned char num, unsigned char n)
{
// 1. 输入验证:确保 n 在 0~7 范围内
if (n > 7) return 0xFF; // 错误处理(根据需求调整)
// 2. 位操作:右移 n 位后与 1 按位与,提取目标位的值
return (num >> n) & 0x01;
}
写入某一位到字节中,num为要写入的字节,position为要写入的第n位,value为要写入位的值(0或1)
// 设置指定位的函数
unsigned char setBit(unsigned char num, unsigned char pos, unsigned char val)
{
// 确保 pos在 0~7 范围内
if (pos > 7) return num;
//将num的第pos位清零,其他位保持不变
num &= ~(1 << pos);
// 根据val的值(非0则1,0则0)左移pos位,然后与num进行或运算,从而将第pos位设置为val的值。
//这里利用了(val != 0)得到一个布尔值(0或1),然后左移pos位,这样就在第pos位上放置了0或1。
num |= ((val != 0) << pos);
return num;
}
1115

被折叠的 条评论
为什么被折叠?



