题目描述:
编码实现以下功能的函数
功能:实现对一个8bit的数据(unsigned char类型)的指定位(例如第n位)的置零或者置1操作,并保持其他位不变。
函数原型
void bit_set(unsigned char *p_data, unsigned char position, int flag)
参数说明:p_data是指定源数据,position是指定位(1-8),flag表示置0还是置1
代码实现
void bit_set(unsigned char *p_data, unsigned char position, int flag)
{
assert(p_data != NULL);
assert(position >= 1 && position <= 8);
//15
//00001111 | 00010000 = 00011111
//00010000--->1<<(position-1)
if (flag == 1)
{
*p_data |= (1 << (position - 1));
}
//15
//00011111 & 11101111 = 00001111
//11101111---> ~(1<<position-1)
else if (flag == 0)
{
*p_data &= ~(1 << (position - 1));
}
else
{
printf("参数有误\n");
}
}