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

Seb*_*Seb 4 c# binary bit

我在这里很困惑.

如果我有一个数字,我们在这里称它为16,我想检查是否设置了一个特定的位.我会做以下事情:

if (16 & (2 ^ bitPosition) == (2 ^ bitPosition))
Run Code Online (Sandbox Code Playgroud)

对?

那么,对于bitPosition = 2,为什么该语句返回true?不应该是假的,因为在这种情况下只有bitPosition = 4是真的吗?

我的理解是:

Bit|Val
0  |1
1  |2
2  |4
3  |8
4  |16
5  |32
6  |64
7  |128
Run Code Online (Sandbox Code Playgroud)

我之前从未使用过这种东西,这令我感到困惑.

Dmi*_*try 7

^操作是在C#中按位异或.
尝试检查如下:

if ((value & (1 << bitPosition)) != 0)
Run Code Online (Sandbox Code Playgroud)

<<左移位运算符在哪里,实际上是2的取幂.