1.面向过程编程
以单字节变量为例
1.1 置一
如果需要置哪一位为1,直接让1左移多少位然后做或运算即可,这样程序看起来清晰,不用数1具体在哪一个位置了,直接看n就可以了。
unsigned char var=0xff;
var |=((1<<n));
STM32的HAL库中把n都用宏定义起了一个名字。
1.2 清零
如果需要清那一位为0,直接让1左移多少位然后取反即可。
unsigned char var=0xff;
var &=(~(1<<n));
2.封装成函数
如果封装成一个函数,方便以后调用,如果函数足够强大,不论是什么类型都能处理,那就厉害了,通用性更强,
unsigned int ChangeBit(unsigned int content, unsigned int pos, unsigned char state)
{
if (state)
{
content |= ((1 << pos));
}
else
{
content &= (~(1 << pos));
}
return content;
}
因为返回值有很多种,所以就需要借鉴c#里面重载的思想,这样不管是啥类型都能用了。