查找是否在 C# 中设置了位位置
Finding whether bit position is set in 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
我以前从未处理过这种事情,这让我感到困惑。
^
运算符在 C# 中是按位异或。
尝试检查如下:
if ((value & (1 << bitPosition)) != 0)
其中 <<
是位左移运算符,实际上是 2 的幂。
我在这里很困惑。
如果我有一个数字,让我们在这里称它为 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
我以前从未处理过这种事情,这让我感到困惑。
^
运算符在 C# 中是按位异或。
尝试检查如下:
if ((value & (1 << bitPosition)) != 0)
其中 <<
是位左移运算符,实际上是 2 的幂。