python - 获取两个(二进制)数字之间不同的位数

标签 python math binary

我有两个数字(二进制​​或非二进制,不起任何作用),它们只有一位不同,例如(伪代码)

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/

相关文章:

algorithm - 人工智能 : selecting immediate acceleration/rotation to get to a final point

math - 绘制2D隐式标量场的等值线

algorithm - 二进制数的子集和

将存储在 2 个无符号字符中的二进制转换为整数

c++ - 使Eclipse生成C++可执行文件

python - 如何用 Python 可视化回归树

python - SDK 上 Cloudstorage 文件的 URL

python - 如何在 Python 中声明重音变量

python - 重新渲染 django-tables2 列标题

java - Java语言的Android EMI计算器: Not resulting correct as Math. pow给出了非常大的数字