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

2024-06-02 05:55:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

实际上,我在想,当a和b都是高值整数,并且它们上有许多位操作时,如何加快操作速度,比如a ^ b。转换需要太多的时间,所以我想先转换它们,然后再使用位运算符进行操作。 如果有人有兴趣的话,我可以帮你把每一个数字转换成布尔。

非常感谢您的建议!


Tags: 方法字符串bin错误时间二进制运算符数字
1条回答
网友
1楼 · 发布于 2024-06-02 05:55:25

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

老实说,它并没有使用64位中的一些位(这是为了在乘法中更容易地检测溢出),但它只是通过将这些位一直保留为零来实现的。在

相关问题 更多 >