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