一、&= ——> “0位 置0,其他位不变”
将等号左边这个数的某一位(等号左右两边数据的位一一对应,等号右边为0的这一位)置0,
其他位(等号右边为1的所有位)保持不变
二、|= ——> “1位 置1,其他位不变”
将等号左边这个数的某一位(等号左右两边数据的位一一对应,等号右边为1的这一位)置1,
其他位(等号右边为0的所有位)保持不变
ef:
//将寄存器M4_SYSREG_PWR_PDWKE1的最后一位置1,其他位不变
M4_SYSREG_PWR_PDWKE1 |= 0x01;
//将寄存器M4_SYSREG_PWR_PDWKE1的最后一位置0,其他位不变
M4_SYSREG_PWR_PDWKE1 &= ~0x01;// (M4_SYSREG_PWR_PDWKE1 &= 0xfe)
第一句,将前面这个寄存器的最后一位置1,其他位不变
第二句,将前面这个寄存器的最后一位置0,其他位不变
&= 一般用在复位,即清零,将=号后面0的位清零,1的位保持不变。
|= 一般用在置位,即置1, 将=号后面1的位置1,0的位保持不变。
a &= b,就是将a与b做按位“与”运算,结果赋值给a,也就相当于a = a & b;
a |= b就是将a,b 做按位”或“运算,结果给a,相当于a = a | b;
(&与运算只有1&1才等于1,其余1&0、0&1、0&0都为0;|或运算只有0&0才等于0,其余1&0、0&1、1&1都为1)
&=看0的位;|=看1的位