给定任意长度的整数,按位不在 Python 中的确切定义是什么?

What is the exact definition of bitwise not in Python, given arbitrary length integers?

按位非 (~) 在为整数定义特定位长度和格式的语言中定义明确。由于在 Python 3 中,整数可以是任意长度,根据定义,它们具有可变的位数。在内部,我相信 Python 使用至少 28 个字节来存储一个 int,但当然这些不是按位非定义的内容。

Python如何定义bitwise not:

  1. 位长是 int 大小、本机平台还是其他因素的函数?
  2. Python 是符号扩展、零扩展还是其他操作?

Python 整数用“无限”数量的符号位模拟 2 的补码表示(所有 0 位表示 >= 0,所有 1 位表示 < 0)。

所有按位整数运算都保持这种有用的错觉。

例如,0 是无限个 0 位,~0 是无限个 1 位 - 在 2 的补码表示法中是 -1。

>>> ~0
-1

一般来说~i = -i-1是对的,英文可以理解为“i的1补码是i的2补码减1”。

对于整数的右移,Python 填充更多的符号位。