给定任意长度的整数,按位不在 Python 中的确切定义是什么?
What is the exact definition of bitwise not in Python, given arbitrary length integers?
按位非 (~
) 在为整数定义特定位长度和格式的语言中定义明确。由于在 Python 3 中,整数可以是任意长度,根据定义,它们具有可变的位数。在内部,我相信 Python 使用至少 28 个字节来存储一个 int,但当然这些不是按位非定义的内容。
Python如何定义bitwise not:
- 位长是 int 大小、本机平台还是其他因素的函数?
- Python 是符号扩展、零扩展还是其他操作?
Python 整数用“无限”数量的符号位模拟 2 的补码表示(所有 0 位表示 >= 0,所有 1 位表示 < 0)。
所有按位整数运算都保持这种有用的错觉。
例如,0 是无限个 0 位,~0
是无限个 1 位 - 在 2 的补码表示法中是 -1。
>>> ~0
-1
一般来说~i = -i-1
是对的,英文可以理解为“i
的1补码是i
的2补码减1”。
对于整数的右移,Python 填充更多的符号位。
按位非 (~
) 在为整数定义特定位长度和格式的语言中定义明确。由于在 Python 3 中,整数可以是任意长度,根据定义,它们具有可变的位数。在内部,我相信 Python 使用至少 28 个字节来存储一个 int,但当然这些不是按位非定义的内容。
Python如何定义bitwise not:
- 位长是 int 大小、本机平台还是其他因素的函数?
- Python 是符号扩展、零扩展还是其他操作?
Python 整数用“无限”数量的符号位模拟 2 的补码表示(所有 0 位表示 >= 0,所有 1 位表示 < 0)。
所有按位整数运算都保持这种有用的错觉。
例如,0 是无限个 0 位,~0
是无限个 1 位 - 在 2 的补码表示法中是 -1。
>>> ~0
-1
一般来说~i = -i-1
是对的,英文可以理解为“i
的1补码是i
的2补码减1”。
对于整数的右移,Python 填充更多的符号位。