如何进行二进制运算和布尔转换?

时间:2012-03-19 09:04:58

标签: c# binary

我有这段代码:

int flags = some integer value;

compte.actif = !Convert.ToBoolean(flags & 0x0002);

它工作得很好问题是我真的不明白它是如何工作的.. &操作是按位的,我假设如此想象110110& 000010我认为它会导致001011(也许我从这里错了)。目标是检查第一项中的2位是否已填满。所以在这种情况下确实如此。

我真的不明白它如何在布尔值中转换..

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

Bitwise和110110& 000010是000010。

ToBoolean looks for a non-zero value,基本上,此代码会检查flags 是否第二位设置,然后否定它(!) 。所以它正在检查“第二位清楚”。

可能会有一个更传统的测试:

compte.actif = (flags & 0x02) == 0;

答案 1 :(得分:2)

按位AND运算将为您提供一个整数,其中包含在两个数字上设置的位。即0b110011& 0b010100产生0b010000。 感叹号会切换布尔值,导致只有第二位的设置才为真。