查找是否在 C# 中设置了位位置

本文关键字:位置 设置 是否 查找 | 更新日期: 2023-09-27 18:31:36

我在这里很困惑。

如果我有一个数字,我们在这里称之为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# 中设置了位位置

^运算符在 C# 中是按位 XOR。
尝试按如下方式检查:

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

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