【发布时间】:2011-02-25 02:42:06
【问题描述】:
如何将整数中的多个二进制数字加倍?例如,如果 bin(x)="1001",则 bin(y) 必须为“11000011”。有没有智能快速的算法?
更新:这是一个优雅的解决方案:
''.join([''.join(i) for i in zip(X,X)])
其中 X 是 bin(int_x)[2:]
但是,我对更快的方法和任何大小的整数感兴趣。也许算术变换应该会有所帮助。
【问题讨论】:
-
@Daniel Trebbien:感谢您的澄清。我的错。
-
非对称输入的输出应该是什么,例如输入 8 (b1000) 应该给出 3 (b00000011) 还是 192 (b11000000)?
-
如果输入是 b0 + 2*b1 + 4*b2 + 8*b3 + ... 那么我认为@psihodelia 想要 b0 + 2*b0 + 4*b1 + 8*b1 + 16*b2 + 32*b2 + ...
-
使用 INTERCAL - 它是基本运算符之一。
DO :1 <- :1¢:1 -
为了优雅,
''.join(chain(*zip(X, X)))怎么样?记得from itertools import chain。:]
标签: python algorithm math binary