Python 2.7 将-1表示为真正的二进制模式
与python3不同,python2中的整数是有限的Python 2.7 将-1表示为真正的二进制模式,python-2.7,Python 2.7,与python3不同,python2中的整数是有限的 In [1]: bin(-1) Out[1]: '-0b1' -1'表示为-0b1' 如何将“-1”编码为像“11111111111……”这样的真正二进制模式?要使二的补码编码有任何意义,整数需要固定长度。Python的整数不是,因此这种编码对它们不可用 不过Numpy确实使用了这种编码。因此, import numpy as np bin(np.uint8(-1)) # => '0b11111111' bin(np.uint32(-
In [1]: bin(-1)
Out[1]: '-0b1'
-1'表示为
-0b1'
如何将“-1”编码为像“11111111111……”这样的真正二进制模式?要使二的补码编码有任何意义,整数需要固定长度。Python的整数不是,因此这种编码对它们不可用 不过Numpy确实使用了这种编码。因此,
import numpy as np
bin(np.uint8(-1))
# => '0b11111111'
bin(np.uint32(-1))
# => '0b11111111111111111111111111111111'
然而,对于Python自己的整数,0b11111111
总是127
,而不是-1
0b11111111111111111111
始终是4294967295
,而不是-1
。因为Python整数只受内存的限制,任何数量的整数都只能产生一个正整数
强制Python整数进入类似C的结构的另一种方法是。例如
Python2整数是有限的,这是正确的,但它们透明地扩展为长整数,而长整数不是有限的。Python3没有这个划分。但是,我不知道会有什么情况会改变我上面写的内容。要使二的补码编码有任何意义,整数必须是固定长度的。Python的整数不是,因此这种编码对它们不可用 不过Numpy确实使用了这种编码。因此,
import numpy as np
bin(np.uint8(-1))
# => '0b11111111'
bin(np.uint32(-1))
# => '0b11111111111111111111111111111111'
然而,对于Python自己的整数,0b11111111
总是127
,而不是-1
0b11111111111111111111
始终是4294967295
,而不是-1
。因为Python整数只受内存的限制,任何数量的整数都只能产生一个正整数
强制Python整数进入类似C的结构的另一种方法是。例如
Python2整数是有限的,这是正确的,但它们透明地扩展为长整数,而长整数不是有限的。Python3没有这个划分。然而,我不知道它会改变我上面写的内容