查找是否在C#中设置位位置

时间:2016-01-22 12:19:01

标签: c# binary bit

我在这里很困惑。

如果我有一个号码,请在此处将其称为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

我之前从未使用过这种东西,这让我很困惑。

1 个答案:

答案 0 :(得分:7)

^运算符在C#中是按位XOR 尝试检查如下:

if ((value & (1 << bitPosition)) != 0)

其中<<是左移位运算符,实际上是2的取幂。