规范的位操作方法
1. 对某一位清零操作
a &= ~ (1<<6) // 括号内的的1向左移动6位 得到 0100 0000
// 对结果取反 1011 1111
//“&”操作的特点是 遇0则0 ,见1不变 。 那么最后结果是 a的第七位(bit6) 清零,其他位不变
2. 对某一位置位操作
a |= (1<<6) //括号内的1向左移动6位 得到 0100 0000
// “ | ”或操作的特点是 遇1则1 , 见0不变。 那么最后的结果是 a的第七位(bit6) 置位, 其他位不变
3. 对某一位取反操作
a ^= (1<<6) //括号内的1向左移动6位 得到 0100 0000
// " ^ "异或操作的特点是 不同值为1,相同值归零。 那么最后的结果是 a的第七位(bit6) 取反, 其他位不变
以上操作的优点 :
如果有一个寄存器 要对其中的一个位 进行配置。而不希望影响其他的位
eg: PCON = 0011 0101 , 要对bit(6) 进行配置 ,如果按以前的方式 操作: PCON = 0111 0101 ;
这么做的缺点很明显,很容易在这么多的0 、1 之间迷失。 如果失误把其中的某一位配置错了 ,后果将是你怎么找 都找不到这个疏忽,工程很有可能在这个
小疏忽中 停留半年。 习惯决定水平!