gpt4 book ai didi

python - 如何找到python中两个数字不同的最低有效位的位置?

转载 作者:太空宇宙 更新时间:2023-11-04 11:06:39 24 4
gpt4 key购买 nike

我有两个二进制数

01110

10010

很容易看出,他们不同的第一个位置是右数第三个。我如何在 python 中找到它?比方说,我会有类似 sdb(a, b) 的东西,在这种情况下会返回 3。有没有比使用左移从右边循环 2 个数字位更好的选择?

最佳答案

您可以对这两个数字进行XOR,当两个位相同时,XOR 将返回 0,如果两个位不同,则返回 1。所以 01110 ^ 10010 的结果将是 11100 然后我们可以使用 rindex 将其解析为字符串以查找我们遇到的第一个 1右侧,因为这将是位不同的第一个地方。这将为我们提供左侧的索引。然后,我们从异或字符串的长度中减去它,以从发生差异的右侧获得位数。

def sdb(a: int, b: int) -> int:
try:
xor_string = f'{a^b:b}'
index = len(xor_string) - xor_string.rindex('1')
except ValueError as ve:
#if no bits are different return index 0
index = 0
return index

num1 = int('01110',2)
num2 = int('10010',2)
print(sdb(num1, num2))

关于python - 如何找到python中两个数字不同的最低有效位的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59286545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com