已知集合时,按位OR和AND与加法和减法不同吗?

时间:2019-06-13 22:37:20

标签: bit-manipulation bitwise-operators bitwise-and bitwise-or

如果a = 2b = 4其中a OR b = 6(a|b) AND NOT b = a则按位AND NOT等于减法,当该值是一组标志时已知包含要删除的标志?

添加内容也一样吗?

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

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的要求,可以。所以:

  • 如果为(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 :(得分:0)

仅当您对第一个操作数中的1位绝对值不是的值进行“或”运算,或与其1位的肯定是值的比特负值进行“与”运算时>在第一个操作数中。