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

C# 查找是否在C中设置了位位置#,c#,binary,bit,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 我以

我在这里感到很困惑

如果我有一个数字,我们在这里叫它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

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

C#中的
^
运算符是按位异或的。
请尝试进行以下检查:

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

if((value&(1^)不是其异或运算符的幂。请将
2^
更改为
1谢谢您是的,这很有效!Doh!