用 Python 檢驗兩個數字是否僅在一位元位置上有所不同


假設我們有兩個數字 x 和 y。我們必須檢查這兩個數字是否僅在一個位元位置上不同。

因此,如果輸入如下 x = 25 y = 17,則輸出將為 True,因為 x = 11001(二進位制)且 y = 10001。僅有一個位元位置不同。

要解決這個問題,我們將遵循以下步驟 -

  • z = x XOR y
  • 如果 z 中的設定位元數為 1,則
    • 返回 True
  • 返回 False

讓我們看以下實現以獲得更好的理解 -

示例程式碼

線上演示

def bit_count(n):
   count = 0
   while n:
      count += n & 1
      n >>= 1
   return count
 
def solve(x, y):
   return bit_count(x ^ y) == 1

x = 25
y = 17
print(solve(x, y))

輸入

25,17

輸出

True

更新於:2021 年 1 月 16 日

388 次瀏覽

激發您的 職業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.