python int 的架构是特定的吗?

Mig*_*uel 2 python binary integer cpu-architecture twos-complement

我们可以将变量定义为整数值,例如

x = 3
y = -2
Run Code Online (Sandbox Code Playgroud)

然后与二元运算符位进行操作&|^~。问题是我们是否总是在每个架构上得到相同的结果,还是行为架构是特定的?我们可以总是假设整数的二进制补码表示吗?

cas*_*evh 5

Python 2.x 支持两种整数类型:intlong. int基于底层的 C long 类型和long是任意精度类型。非常早期的 Python 版本(2.2 之前),将类型视为两种独立的类型,但它们大多在 Python 2.2 中组合在一起。Python 3.x 仅使用任意精度类型。

位操作就像应用于任意精度 2 的补码一样。如果需要,在 Python 2.xint中将自动提升为 a long

该行为跨平台是一致的。