浮云落笔

浮云落笔

首页
瞬间
反馈
浮云落笔

浮云落笔

首页 瞬间 反馈
  1. 首页
  2. stm32
  3. 位运算

位运算

  • stm32
  • 发布于 2025-12-18
  • 291 次阅读
flor
flor

int a[];
a &= ~(1<<n); 变量a[n]设置为0,其他bit不变
a |= (1<<n); 变量a[n]设置为1,其他bit不变

将a[x2到x1]=0000 假如x1到x2共4个(包含x1)bit为置0,1111 == 0xf
a &= ~(0xf << x1);

将a[x2到x1]=1111 假如x1到x2共4个(包含x1)bit为置1,1111 == 0xf
a |= (0xf <<x1);

位操作四件套

单个位的四个常用动作速查(reg 为目标变量/寄存器,n 为位号):

if (reg & (1 << n))        // 测试第 n 位是不是 1
reg |= (1 << n);           // 把第 n 位置 1
reg &= ~(1 << n);          // 把第 n 位清 0
reg ^= (1 << n);           // 翻转第 n 位

其中"测试"和"翻转"是上文没覆盖的两个动作:& 掩码不修改原值,适合直接放进 if 条件判断某一位;^ 对同一位异或两次等于翻回来,所以天然适合做"翻转"。

目录
湘ICP备2025147565号-1
gongan beian 湘公网安备43102602000213号