当一个集合已知时,按位或和与不等于加法和减法吗?

Is a bitwise OR and AND NOT the same as addition and subtraction when a set is known?

If a = 2 and b = 4 where a OR b = 6 and (a|b) AND NOT b = a then is a bitwise AND NOT equivalent to subtraction when the value is a set of flags哪个已知包括被删除的标志?

加法也一样吗?

请注意,这是在已知标志存在于集合中的情况下。如果标志不存在,则不会发生加法或减法。

仅当您与第一个操作数中的 1 位绝对 的值进行 ORing 或与 1 位明确的值的 bit-negated 值进行 AND 运算时在第一个操作数中是

如果我理解正确的话,是的。所以:

  • 如果(a & b) == 0,则(a | b) == (a + b)
  • 如果(a | b) == a,则(a & ~b) == (a - b)

作为一种证明,假设加法可以写成a + b == (a ^ b) + ((a & b) << 1)(也就是做完所有的sums-without-carry,然后分别加上进位)。因此,如果 a & b 为零,则进位消失,变为 a ^ b,然后变为 a | b。类似的事情发生在我们知道没有借位的减法上。