“ uFlags&=〜CHN_PANNING”命令有什么作用?

时间:2018-09-08 21:13:58

标签: c++ c flags

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

uFlags &= ~CHN_PANNING;

根据我的研究,uFlags是位智标记。

2 个答案:

答案 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>