此命令在.c / .cpp文件中是什么意思?
uFlags &= ~CHN_PANNING;
根据我的研究,uFlags是位智标记。
答案 0 :(得分:4)
~
是位否定。它将011001
变成100110
,依此类推。如果您用数字的位求反&
,则实际上从位中除去了右侧的1
位(1
在位求反后转向0
,如果1
与&
进行了对,则没有位可以停留在0
上。 0
变成了1
,并且&
与1
的合并不会改变原始位)。
bitset0 &=~ bitset1
(或bitset0 &~ bitset
)是一种C / C ++习语,用于(位)集减法。它从bitset1
中减去bitset0
(即数学符号为bitset0 \ bitset1
),可能(在=
版本中)将结果分配给bitset0
。
答案 1 :(得分:3)
按位与AND赋值运算符 &=
赋予表达式
uFlags &= ~CHN_PANNING;
与
含义相同uFlags = uFlags & ~CHN_PANNING;
现在,&
按位运算符用于将标志的所有那些位复位(清除)为0
,而将掩码的相应位复位(清除)为{{1 }}。标志的其他位保持不变。
例如:
0
一元运算符 11001011 (flags)
&
10101110 (mask)
-------------------
10001010 (result)
是一个否定符-它将值~
的位切换为0
,反之亦然。这意味着您的掩码1
将在原始~CHN_PANNING
中设置(设置为0
的那个位(或那些位)重置(清除)为1
。 / p>