SQL最大值计算中的INT类型

INT type in SQL max value calculation

我目前正在学习SQL。

在查看 INT 时,我了解到 INT 类型的长度为 4 个字节,每个字节转换为 8 位,导致每个 INT 为 32 位。

然而,对于 INT,据说无符号类型的最大值为 (2^32)-1,其中 -1 表示 0 值。我知道 32 来自每个 int 是 32 位的事实。

我的问题是2在计算中是从哪里来的?

我的直觉告诉我,每个位都有某种度量值为 2。

计算机使用二进制系统来存储值。让我们尝试用二进制和十进制进行类比:

考虑基于 10 的(十进制)系统。如果您的数字有 32 位小数,每个位的值为 0-9,则您有 10^32 个可能的值(显然足够;我们每天都使用这个系统)。

现在考虑基于2的系统,这是计算机使用的系统(出于实际原因-两种状态最容易区分,接线逻辑最简单)。每个位置(位)的值都是 0-1,所以有 2^32 个可能的值。

int实际上是SQL中的一个有符号值。范围是从-2^312^31 - 1,也就是-2,147,483,6482,147,483,647。此范围内恰好有 2^32 个可能的值。请注意,它包括 0.

无符号整数的范围从 02^32-1,即最大 4,294,967,295- 1 是因为 0 包含在范围内,所以计数从 0 开始,而不是 1

可能值的范围很容易用更少的比特看到。例如,3位可以表示从-4到3的值:

Bits    Unisgned     Signed
000        0            0
001        1            1
010        2            2
011        3            3
100        4           -4
101        5           -3
110        6           -2
111        7           -1