我在这里很困惑。
如果我有一个号码,请在此处将其称为16,我想检查是否设置了某个位。我会做以下事情:
if (16 & (2 ^ bitPosition) == (2 ^ bitPosition))
右?
为什么然后,对于bitPosition = 2,该语句是否返回true?不应该是假的,因为在这种情况下只有bitPosition = 4是真的吗?
我的理解是:
Bit|Val
0 |1
1 |2
2 |4
3 |8
4 |16
5 |32
6 |64
7 |128
我之前从未使用过这种东西,这让我很困惑。
答案 0 :(得分:7)
^
运算符在C#中是按位XOR
尝试检查如下:
if ((value & (1 << bitPosition)) != 0)
其中<<
是左移位运算符,实际上是2的取幂。