Python 中的 numpy 定义 dtype 为 short 以后为什么赋值 32768 的值是-32768 ?
資深大佬 : SystemLight 9
a = np.array([1, 2, 3, 4, 5, 6, 32768]) a.dtype = np.short print(a)
输出: [ 1 0 2 0 3 0 4 0 5 0 6 0 -32768 0]
输出的结果为什么分成了两个值了呢?
大佬有話說 (7)
a = np.array([1, 2, 3, 4, 5, 6, 32768]) a.dtype = np.short print(a)
输出: [ 1 0 2 0 3 0 4 0 5 0 6 0 -32768 0]
输出的结果为什么分成了两个值了呢?
@minami 还真是,感谢启发,我输出值以后从 np.short 类型转成了 python int 类型,所以最高位变了,符号位置也就变了
python_val = -32769
print(bin(python_val)) # 符号位+中间数字+已有的 16 位数字位 -0b1000000000000001 存成补码 1…1…0111111111111111
print(python_val)
numpy_short_val = np.short(python_val) # numpy 得到以后把只取 16 位,发现最高位是 0 为正数,正数原码=补码 0111111111111111
print(bin(numpy_short_val)) # 当 python 再读取出来时:0111111111111111 就是 32767
print(numpy_short_val)