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

问题描述 投票:1回答:2

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

uFlags &= ~CHN_PANNING;

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

c++ c flags
2个回答
4
投票

~有点否定。它将011001变成100110等。如果你用数字的位否定来&,你基本上从左侧的位移除右侧的1位(1s在位否定之后转向0s而不是如果它是1-ed与&,那么位可以保持00s转向1s并且用&进行1-ing不会改变原始位)。

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


3
投票

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

uFlags &= ~CHN_PANNING;

意思相同

uFlags = uFlags & ~CHN_PANNING;

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

例如:

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

一元运算符~是否定 - 它将值0切换到1,反之亦然。这意味着你的面具~CHN_PANNING将重置(清除)到0那个位(或那些位),它们在原始的1中设置(到CHN_PANNING)。

© www.soinside.com 2019 - 2024. All rights reserved.