需要非常熟练掌握的寄存器位操作

发布时间 2023-09-18 10:23:26作者: Nichoooolas
  1. bita置零 (a 为 0-7 ,0-15, 0-31 位)
    reg &= ~(1<<a);
  2. bita置1
    reg |= (1 << a);
  3. bita取反
    reg ^= (1 << a);
  4. 获取bita的值
    reg_value = (reg >> a) & 1;

思路:
置0: 用&,因为,and,or 中 X and 0为 0
置1: 用|,因为,and,or 中 X and 1为 1

位操作算数符:
| 表示按位或操作符
& 表示按位与操作符
注意与 逻辑与或的区别,||,&& 结果为 一位的0,1

寄存器某一位或者某几位的设定流程是“读——改——写”,通常都是所有位一起进行的,并不能单独去修改某一位。

参考:https://zhuanlan.zhihu.com/p/616803128