我有一些标志,其中:

A = 1 (0001)
B = 2 (0010)
C = 4 (0100)
D = 8 (1000)

我想在我的标志中设置位A和C:flag = A | C

现在我的标志是5(0101)。

我需要从标志中删除C位。我怎样才能做到这一点?

最佳答案

要清除标志,您通常使用AND及其补码,例如使用C和相关语言:

x = 5;           // x = 0101
x = x & ~C;      // x = x & 1011 = 0101 & 1011 = 0001

注意:这可以更简洁地表示为:
x &= ~C;

或者,如果您已经知道特定位为1并将其设置为0,则可以使用XOR切换(反转)该位:
x = x ^ C;       // x = x ^ 0100 = 0101 ^ 0100 = 0001

要么:
x ^= C;

关于math - 从数字中删除位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15387482/

10-10 04:53