"uFlags &= ~CHN_PANNING" 命令有什么作用?
What does the "uFlags &= ~CHN_PANNING" command do?
这个命令在 .c/.cpp 文件中是什么意思?
uFlags &= ~CHN_PANNING;
根据我的研究,uFlags 是 Bit-Wise 标志。
~
是位取反。它把 011001
变成 100110
,等等。如果你 &
与数字的位取反,你实际上从位中删除了右侧的 1
位在左侧(1
s 在位取反后变为 0
s,并且如果它是 &
与 0
编辑的,则任何位都不能保留 1
。 0
s 转向 1
s 并且 &
-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 值为 0
到 1
的位,反之亦然。这意味着您的掩码 ~CHN_PANNING
将重置(清除)到 0
在原始 CHN_PANNING
中设置(到 1
)的那个位(或那些位)。
这个命令在 .c/.cpp 文件中是什么意思?
uFlags &= ~CHN_PANNING;
根据我的研究,uFlags 是 Bit-Wise 标志。
~
是位取反。它把 011001
变成 100110
,等等。如果你 &
与数字的位取反,你实际上从位中删除了右侧的 1
位在左侧(1
s 在位取反后变为 0
s,并且如果它是 &
与 0
编辑的,则任何位都不能保留 1
。 0
s 转向 1
s 并且 &
-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 值为 0
到 1
的位,反之亦然。这意味着您的掩码 ~CHN_PANNING
将重置(清除)到 0
在原始 CHN_PANNING
中设置(到 1
)的那个位(或那些位)。