关于ARM编程: rTCFG1 &= ~0xf; rTCFG1 |= 3; 这一句和 rTCFG1=3; 有什么区别?为什么要这么麻烦呢?

[复制链接]
查看11 | 回复3 | 2012-3-17 22:33:15 | 显示全部楼层 |阅读模式
前面两句的这种写法可以只对你需要的位完成操作而不影响其他位的值,后一种直接赋值的写法会修改其他位的值,在某些情况下可能会引起不必要的错误。注意了,我说的是这两种写法,并不仅仅针对你上面的这三句话,你可以写个简单的程序体会一下。...
回复

使用道具 举报

千问 | 2012-3-17 22:33:15 | 显示全部楼层
rTCFG1 &= ~0xf;//先按位与,将相关位清零,其他位不变。 rTCFG1 |= 3;//再按位或,将相关位置1,其他位不变。rTCFG1=3;//只可以将想关位置1,但是不相关的位也变成0了。...
回复

使用道具 举报

千问 | 2012-3-17 22:33:15 | 显示全部楼层
&=,是左边操作数等于自身与上右边操作数,一般“x & 0=0”(x可以是1或0)。所以这个一般都是用来某些位清零, rTCFG1 &= ~0xf就是前4位清零,其他保持不变。|=,一般是用来某些置1, rTCFG1 |= 3就是前两位(0b11=3)置1,其他保护不变。rTCFG1=3是直接赋值为3。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行