"uFlags &= ~CHN_PANNING" 命令有什么作用?

What does the "uFlags &= ~CHN_PANNING" command do?

这个命令在 .c/.cpp 文件中是什么意思?

uFlags &= ~CHN_PANNING;

根据我的研究,uFlags 是 Bit-Wise 标志。

~ 是位取反。它把 011001 变成 100110,等等。如果你 & 与数字的位取反,你实际上从位中删除了右侧的 1 位在左侧(1s 在位取反后变为 0s,并且如果它是 &0 编辑的,则任何位都不能保留 10s 转向 1s 并且 &-ing 与 1 不会改变原始位)。

因此,

bitset0 &=~ bitset1(或 bitset0 &~ bitset)是一种用于(位)集减法的 C/C++ 习语。它从 bitset0 中减去 bitset1(即数学符号中的 bitset0 \ bitset1),可能(在 = 版本中)将结果分配给 bitset0.

按位与赋值运算符 &= 给出表达式

uFlags &= ~CHN_PANNING;

同义
uFlags = uFlags & ~CHN_PANNING;

现在,&位运算符用于将所有这些标志位重置(清除)为0,具有掩码重置的相应位(清除)到 0。标志的其他位保持不变。

例如:

  11001011  (flags)
&
  10101110  (mask)
-------------------
  10001010  (result)

一元运算符 ~ 是否定 - 它 es 值为 01 的位,反之亦然。这意味着您的掩码 ~CHN_PANNING 将重置(清除)到 0 在原始 CHN_PANNING 中设置(到 1)的那个位(或那些位)。