功能:实现对一个8bit数据(unsigned char)类型的指定位(例如第n位)的置0或置1操作,并保持其他位不变。
函数原型:void bit_set(unsigned char *p_data, unsigned char position, int flag)
函数参数说明:p_data是制定的源数据,position是指定位(取值范围1~8),flag是置0还是置1操作
#include <stdio.h>
#include <assert.h>
void bit_set(unsigned char *p_data, unsigned char position, int flag)
{
unsigned char tmp = 1;
assert(p_data);
if (flag)
{
*p_data |= (tmp << (position - 1));
}
else
{
*p_data &= ~(tmp << (position - 1));
}
}
int main()
{
unsigned char data = 15;
bit_set(&data, 5, 1);
printf("%d\n", data);
getchar();
return 0;
}