python - 加倍二进制数

标签 python algorithm math binary

如何将整数中的多个二进制数字加倍?例如,如果 bin(x)="1001",则 bin(y) 必须为“11000011”。有什么智能又快速的算法吗?

更新:这是一个优雅的解决方案:

''.join([''.join(i) for i in zip(X,X)])

其中 X 是 bin(int_x)[2:]

但是,我对更快的方法和任何大小的整数感兴趣。也许算术转换应该有所帮助。

最佳答案

这是一种应该相当快的方法:将您的数字转换为二进制字符串,然后将结果重新解释为以 4 为基数。现在要确保所有“1”都正确加倍,将结果乘以 3。

>>> x = 9
>>> bin(x)
'0b1001'
>>> y = int(bin(x)[2:], 4)*3
>>> bin(y)
'0b11000011'

关于python - 加倍二进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2928886/

相关文章:

python - 在代码中调用 SQLAlchemy flush() 是否有任何副作用?

用于 MS-Access 的 Python ORM

r - 获取n个节点间最短路径的子图

python - 在字符串中查找第一个非重复字符的最佳方法

algorithm - 找出从 1 到 n 的总位数

c++ - 为什么我在 OpenGL 的透视投影中将 Z 除以 W?

c# - 帮助优化算法

python - 接收 bool 结果以查看 crontab 是否存在

python - 带有附加参数的 Django redirect()

language-agnostic - 计算 2D 向量叉积