正如我所注意到的,一方面,Python中存在按位运算符,例如:8 ^ 10
,结果为2,这很好。
另一方面,存在将基数10整数转换为二进制数的方法,例如, bin(2)
我想知道我是否可以将这两个结合起来,我的意思是字符串上没有按位运算符,因此,bin(8) ^ bin(10)
只会抛出错误。我想当在整数上使用按位运算符时,Python的第一步始终是转换。
实际上,当a和b都是高整数值并且对它们进行许多按位运算时,我正在考虑如何加速像a ^ b
这样的操作。转换需要花费太多时间,因此我想首先将它们转换为仅在之后使用按位运算符进行操作。
也许将每个号码转换为bool列表可能会有所帮助,但如果有人有更好的想法,我会感兴趣。
非常感谢您提供任何好的建议!
答案 0 :(得分:0)
您似乎假设Python内部将整数存储为十进制数字字符串。这完全是假的。整数,甚至是任意精度的整数(3.x中的long
)都存储为位串。对两个Python整数进行异或运算只是对存储在内存中的位执行本机XOR运算。它将2x64位从存储器加载到寄存器中,将这些位与CPU允许的有效XOR,并将结果写回存储器。无需转换。
说实话,它不使用这些64位中的一些(这用于在乘法中更容易的溢出检测),但它只是将这些位保留为零而这样做