在python中,如何找到两个数字不同的最低有效位的位置?
我有两个二进制数在python中,如何找到两个数字不同的最低有效位的位置?,python,python-3.x,bit-manipulation,bit,Python,Python 3.x,Bit Manipulation,Bit,我有两个二进制数 01110 及 很容易看出,它们不同的第一个位置是从右侧开始的第三个位置。我如何在python中找到它?比方说,我会得到类似于sdba的东西,b,在这种情况下会返回3。有没有比使用leftshift从右侧循环2个数字的位更好的选项?您可以对这两个数字进行异或运算,当两个位相同时,异或将返回0,当两个位不同时,异或将返回1。01110^10010的结果将是11100,然后我们可以使用rindex将其解析为一个字符串,以查找我们从右侧遇到的第一个1,因为这将是位不同的第一个位置。
01110
及
很容易看出,它们不同的第一个位置是从右侧开始的第三个位置。我如何在python中找到它?比方说,我会得到类似于sdba的东西,b,在这种情况下会返回3。有没有比使用leftshift从右侧循环2个数字的位更好的选项?您可以对这两个数字进行异或运算,当两个位相同时,异或将返回0,当两个位不同时,异或将返回1。01110^10010的结果将是11100,然后我们可以使用rindex将其解析为一个字符串,以查找我们从右侧遇到的第一个1,因为这将是位不同的第一个位置。这将为我们提供从左侧开始的索引。然后,我们从xor字符串的长度中减去该值,以从出现差异的右侧获得位计数
def sdba:int,b:int->int:
尝试:
xor_string=f'{a^b:b}'
index=lenxor\u string-xor\u string.rindex'1'
除ValueError为ve外:
如果没有不同的位,则返回索引0
索引=0
回报指数
num1=int'01110',2
num2=int'10010',2
printsdbnum1,num2
您可以对这两个数字进行异或运算,当两个位相同时,异或运算将返回0,当两个位不同时,异或运算将返回1。01110^10010的结果将是11100,然后我们可以使用rindex将其解析为一个字符串,以查找我们从右侧遇到的第一个1,因为这将是位不同的第一个位置。这将为我们提供从左侧开始的索引。然后,我们从xor字符串的长度中减去该值,以从出现差异的右侧获得位计数
def sdba:int,b:int->int:
尝试:
xor_string=f'{a^b:b}'
index=lenxor\u string-xor\u string.rindex'1'
除ValueError为ve外:
如果没有不同的位,则返回索引0
索引=0
回报指数
num1=int'01110',2
num2=int'10010',2
printsdbnum1,num2
10010