这个问题已经有了答案:
Checking if a bit is set or not
9个答案
我现在很困惑。
如果我有一个数字,我们在这里叫它16,我想检查是否设置了一个特定的位。我将执行以下操作:

if (16 & (2 ^ bitPosition) == (2 ^ bitPosition))

对吗?
那么,对于bitposition=2,为什么该语句返回true?它不应该是false吗,因为在这种情况下只有bitposition=4是true吗?
我的理解是:
Bit|Val
0  |1
1  |2
2  |4
3  |8
4  |16
5  |32
6  |64
7  |128

我以前从没做过这种事情,这让我很困惑。

最佳答案

^运算符在c中是按位异或。
试着检查如下:

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

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

10-06 04:09