python 中的整数按位运算是否依赖于处理器?

Are bitwise operations on an integer in python processor dependent?

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

这样的按位运算
msg = 0
msg |= 1 << n

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

一位同事建议我使用 x*2**n 而不是 x << n,因为前者应该是独立于平台的。但我真的不喜欢那样,因为它会混淆我在通过 can 总线发送的消息中设置特定位的意图,并且可能需要更多的处理能力(我不知道 python 优化了多少口译员有能力)。 这会产生不同的结果吗(假设 xn 都是正整数)?

像这样的按位操作不依赖于任何语言的硬件字节顺序,甚至不依赖于 C。这些类型的操作发生在数字被加载到 CPU 寄存器之后,此时布局在记忆中并不重要。您可以将它们本质上视为算术运算,例如 + 或 -。

所以,你的大学是错误的,x << n在所有平台上都意味着同样的事情。事实上,基本上所有 "basic" Python 语言在所有平台上的工作方式都是一样的。标准库中只有非常特定于平台的函数有所不同。

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