我有两个数字(二进制或非二进制,不起任何作用),它们只有一位不同,例如(伪代码)
a = 11111111
b = 11011111
我想要一个简单的 python 函数,它返回不同的位位置(在给定示例中,从右到左看时为“5”)。我的解决方案是(python)
math.log(abs(a-b))/math.log(2)
但我想知道是否有更优雅的方法来做到这一点(不使用 float 等)。
谢谢 亚历克斯
最佳答案
你可以使用二进制独占:
a = 0b11111111
b = 0b11011111
diff = a^b # 0b100000
diff.bit_length()-1 # 5 (the first position (backwards) which differs, 0 if a==b )
关于python - 获取两个(二进制)数字之间不同的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12494545/