我们在代码实现中,经常会有需要设置或清除某一位的操作,如设置和清除最低位(设置最低位即是把最低位赋值为1,清除即为赋值为0),具体实现如下:
data |= 0x01; //设置最低位
data &= 0xFFFE; //清除最低位
大家觉得这个实现由什么问题吗?
注意存在两个问题:
- 设置时使用0x01人容易,但是清除的时候每次都要计算比较麻烦
- 不知道data占用几个字节,就不好确认是使用0xFFFE还是0xFFFFFFFE
我们修改后如下:
#define BITMASK (0x01)
data |= BITMASK;
data &= ~BITMASK;
定义宏之后,便于以后修改,通过~取反,不用考data占用几位了。