Python中二进制数的二元运算符

时间:2014-04-28 11:58:05

标签: python binary bitwise-operators

正如我所注意到的,一方面,Python中存在按位运算符,例如:8 ^ 10,结果为2,这很好。  另一方面,存在将基数10整数转换为二进制数的方法,例如, bin(2)

我想知道我是否可以将这两个结合起来,我的意思是字符串上没有按位运算符,因此,bin(8) ^ bin(10)只会抛出错误。我想当在整数上使用按位运算符时,Python的第一步始终是转换。

实际上,当a和b都是高整数值并且对它们进行许多按位运算时,我正在考虑如何加速像a ^ b这样的操作。转换需要花费太多时间,因此我想首先将它们转换为仅在之后使用按位运算符进行操作。  也许将每个号码转换为bool列表可能会有所帮助,但如果有人有更好的想法,我会感兴趣。

非常感谢您提供任何好的建议!

1 个答案:

答案 0 :(得分:0)

您似乎假设Python内部将整数存储为十进制数字字符串。这完全是假的。整数,甚至是任意精度的整数(3.x中的long)都存储为位串。对两个Python整数进行异或运算只是对存储在内存中的位执行本机XOR运算。它将2x64位从存储器加载到寄存器中,将这些位与CPU允许的有效XOR,并将结果写回存储器。无需转换。

说实话,它不使用这些64位中的一些(这用于在乘法中更容易的溢出检测),但它只是将这些位保留为零而这样做