首页 > 解决方案 > 零数组减 1 给出 255 数组?

问题描述

我有这个代码:

a = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype='uint8')
a-1

为什么我会得到:

array([255, 255, 255, 255, 255, 255, 255, 255, 255, 255], dtype=uint8)

因此?

并不是:

array([-1, -1, -1,...], dtype=uint8)

标签: pythonnumpy

解决方案


因为您使用的是uint8数据类型,它是一个 8 位的无符号整数。

它的范围是 [0, 255],因为uint8有 8 位。因此,可以用这种数据类型表示的最大数量是2^8 - 1 = 256 - 1 = 255(因为包括 0)。当你从 0 中减去 1 时,你会从0000000011111111。这称为下溢


推荐阅读