2016-01-22 55 views
3

我在这里很困惑。查询C#中是否设置了位的位置

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

^幂不通电的XOR运算符。 –

+0

将'2 ^'更改为'1 <<' –

回答

6

^运算符在C#中按位异或。
尝试检查如下:

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

<<是位左移操作符是,事实上,2

+0

谢谢,是的,这工作!卫生署! – Seb