C语言中 “|=”vs“&=”

本文介绍了位操作符&=和|=的用法。&=用于清零,将等号右边为0的位设为0,其他位保持不变;|=用于置1,将等号右边为1的位设为1,其他位保持不变。通过示例展示了如何在寄存器操作中使用这两个操作符来设置或清除特定位。
摘要由CSDN通过智能技术生成

一、&= ——> “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的位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值