如何重置ulong中的单个位?

How to reset single bit in ulong?

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

151111。通过设置第 5 位,我将得到 47,所以 101111

我想出了如何设置位:

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

但我正在努力如何将它重置回 0。我正在尝试:

a &= ~(1 << 5);

它不起作用,因为我不能在 ulong 变量上使用 & 运算符。

有什么解决方法?我需要这个操作尽可能快。

I can't use & operator on ulong variable.

那是因为 1 已签名。使用 U 后缀使其无符号可解决问题:

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

Demo.