在 Python 中检查两个数字是否互为补码


假设我们有两个数字 x 和 y。我们需要检查这两个数字中是否有一个是另一个的 1 的补码。我们都知道二进制数的 1 的补码是将所有位从 0 翻转到 1 或从 1 翻转到 0。

因此,如果输入类似于 x = 9,y = 6,则输出将为 True,因为二进制表示形式为 x = 1001 和 y = 0110,它们互为补码。

为了解决这个问题,我们将遵循以下步骤:

  • z = x XOR y
  • 当 z 中的所有位都被设置为 1 时返回 True,否则返回 False

示例

让我们看看以下实现以更好地理解:

 在线演示

def all_one(n):
   if n == 0:
      return False;
   if ((n + 1) & n) == 0:
      return True
   return False
def solve(x, y):
   return all_one(x ^ y)
x = 9
y = 6
print(solve(x, y))

输入

9, 6

输出

True

更新于: 2021年1月19日

539 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告