在 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
广告