在 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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告