用 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 次浏览

激发您的 职业

通过完成课程获得认证

开始
广告