这个命令在.c / .cpp文件中意味着什么?
uFlags &= ~CHN_PANNING;
根据我的研究,uFlags是Bit-Wise标志。
~
有点否定。它将011001
变成100110
等。如果你用数字的位否定来&
,你基本上从左侧的位移除右侧的1
位(1
s在位否定之后转向0
s而不是如果它是1
-ed与&
,那么位可以保持0
。0
s转向1
s并且用&
进行1
-ing不会改变原始位)。
因此,bitset0 &=~ bitset1
(或bitset0 &~ bitset
)是(位)集减法的一种C / C ++习语。它从bitset1
(即数学符号中的bitset0
)中减去bitset0 \ bitset1
,可能(在=
版本中)将结果分配给bitset0
。
按位AND赋值运算符&=
给出了表达式
uFlags &= ~CHN_PANNING;
意思相同
uFlags = uFlags & ~CHN_PANNING;
现在,&
逐位运算符用于将所有这些标志位复位(清除)到0
,将掩码的相应位复位(清零)到0
。其他位标志保持不变。
例如:
11001011 (flags)
&
10101110 (mask)
-------------------
10001010 (result)
一元运算符~
是否定 - 它将值0
切换到1
,反之亦然。这意味着你的面具~CHN_PANNING
将重置(清除)到0
那个位(或那些位),它们在原始的1
中设置(到CHN_PANNING
)。