这个问题已经有了答案:
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的幂。