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^31
到2^31 - 1
,也就是-2,147,483,648
到2,147,483,647
。此范围内恰好有 2^32
个可能的值。请注意,它包括 0
.
无符号整数的范围从 0
到 2^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
我目前正在学习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^31
到2^31 - 1
,也就是-2,147,483,648
到2,147,483,647
。此范围内恰好有 2^32
个可能的值。请注意,它包括 0
.
无符号整数的范围从 0
到 2^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