如何在ulong类型中重置单个位?

3

我有一个ulong数字。我需要能够快速设置和重置单个位。例如:

151111。通过设置第5位,我会得到47,因此为101111

我已经想出如何设置一位:

ulong a = 15;
a |= 1 << 5; // so, now a=47

但我不知道如何将它重置为0。我尝试了:

a &= ~(1 << 5);

这样做是行不通的,因为我无法在ulong变量上使用&运算符。

有什么替代方案?我需要尽可能快地进行此操作。


可能是长整型的位运算的重复问题。 - itsme86
1
@itsme86 虽然你链接的问题解释了发生了什么,肯定会让 OP 走上正确的轨道,但它并没有提供 OP 寻找的解决方法,所以我不确定它是否适合作为重复关闭的候选项。 - Sergey Kalinichenko
@dasblinkenlight,我猜期望OP意识到IDE错误窗口消息Operator '& =' cannot be applied to operands of type 'ulong' and 'int'与@RoyDictus在提出的重复项中提出的答案几乎相同,可能太多了。 - TnTinMn
1个回答

4

我无法在 ulong 变量上使用 & 运算符。

这是因为 1 是有符号的。使用 U 后缀将其变为无符号数,即可解决问题:

a &= ~(1U << 5);

演示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接