2016-01-22 50 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

相關問題