正如我所注意到的,一方面,Python中有按位运算符,比如:8 ^ 10
,结果是2,这很好。
另一方面,有一些方法可以将以10为基数的整数转换为二进制数,例如bin(2)
我想知道是否可以将这两者结合起来,我的意思是字符串上没有按位运算符,因此,bin(8) ^ bin(10)
只会抛出一个错误。我想当对整数使用位运算符时,Python的第一步总是转换。
实际上,我在想,当a和b都是高值整数,并且它们上有许多位操作时,如何加快操作速度,比如a ^ b
。转换需要太多的时间,所以我想先转换它们,然后再使用位运算符进行操作。
如果有人有兴趣的话,我可以帮你把每一个数字转换成布尔。
非常感谢您的建议!
您似乎假定Python在内部将整数存储为十进制数字的字符串。那是完全错误的。整数,甚至是任意精度的整数(3.x中的
long
)都存储为位字符串。将两个Python整数XORing只对存储在内存中的位执行本机XOR操作。它将2x64位从内存加载到寄存器中,在CPU允许的情况下对这些位进行异或运算,并将结果写回内存。无需转换。在老实说,它并没有使用64位中的一些位(这是为了在乘法中更容易地检测溢出),但它只是通过将这些位一直保留为零来实现的。在
相关问题 更多 >
编程相关推荐