当值是一组已知包含要删除的标志的标志时,如果a = 2
以及b = 4
在哪里a OR b = 6
和(a|b) AND NOT b = a
然后按位等效于减法?AND NOT
加法也一样吗?
请注意,这是在已知标志存在于集合中的情况下。如果标志不存在,则不会发生加法或减法。
当值是一组已知包含要删除的标志的标志时,如果a = 2
以及b = 4
在哪里a OR b = 6
和(a|b) AND NOT b = a
然后按位等效于减法?AND NOT
加法也一样吗?
请注意,这是在已知标志存在于集合中的情况下。如果标志不存在,则不会发生加法或减法。
如果我正确理解你的要求,是的。所以:
(a & b) == 0
, 那么(a | b) == (a + b)
, 和(a | b) == a
,那么(a & ~b) == (a - b)
作为一种证明,假设加法可以写成a + b == (a ^ b) + ((a & b) << 1)
(这是做所有的无进位求和,然后分别添加进位)。因此,如果a & b
为零,则进位消失并变为公正a ^ b
,而后者又变为a | b
。类似的事情发生在我们知道没有借位的减法上。
仅当您与 1 位绝对不在第一个操作数中的值进行 ORing 或与 1 位肯定在 第一个操作数中的值的位否定值进行 ANDing 时。