python处理器中对整数的按位运算是否相关?

时间:2019-06-21 12:47:26

标签: python bit-manipulation endianness

This answer表示python中整数的字节序取决于处理器体系结构。 这是否意味着像这样的按位操作

x*2**n

在不同的计算机上产生不同的结果,具体取决于处理器?

一个同事建议我使用x << n而不是x,因为前者应该独立于平台。但我真的不喜欢这样,因为这会混淆我设置要通过can总线发送的消息中的特定位的意图,并且可能需要更多处理能力(我不知道python解释器能够进行多少优化)。 会得出不同的结果(假设n和{{1}}都是正整数)吗?

1 个答案:

答案 0 :(得分:2)

像这样的按位运算不依赖于任何语言的硬件耐用性,甚至不取决于C。此类操作在将数字加载到CPU寄存器之后发生,此时内存的布局无关紧要。您可以将它们本质上视为算术运算,例如+或-。

因此,您的大学风格是错误的,x << n在所有平台上的含义相同。实际上,基本上所有“基本” Python语言在所有平台上均相同。标准库中仅平台特定的功能有所不同。

关于移位操作的另一件事:特别是Python有点特殊,因为它具有无限长的整数,但是<<的工作与您期望的一样。 1 << 10002**1000相同,如果x和n为整数,则通常与x << n == x * (2**n)相同。