我目前正在学习sql。在查看int时,我了解到int类型是4字节长的,每个字节转换为8位,导致每个int为32位。但是,对于int,据说无符号类型的最大值是(2^32)-1,其中-1表示0值。我知道32是因为每个int是32位。我的问题是在计算中2是从哪里来的?我的直觉告诉我,每一位都会有一个值为2的度量。
gwo2fgha1#
计算机使用二进制来存储值。让我们尝试一下二进制和十进制之间的类比:考虑10进制(十进制)。如果数字有32位小数位,每一位都有0-9的值,那么就有10^32个可能的值(显然足够了;我们每天都使用这个系统)。现在考虑基于2的系统,这是计算机使用的系统(出于实际原因-两种状态最容易区分,布线逻辑最简单)。每个位置(位)都有值0-1,因此有2^32个可能的值。
xxhby3vn2#
int 实际上是sql中的有符号值。范围从 -2^31 通过 2^31 - 1 ,即 -2,147,483,648 至 2,147,483,647 . 确实有 2^32 tis范围内的可能值。请注意,它包括 0 .无符号整数的范围为 0 至 2^32-1 ,这取决于 4,294,967,295 . 这个 - 1 是因为 0 包含在范围内,因此计数从 0 而不是 1 .可能值的范围很容易用较少的位看到。例如,3位可以表示-4到3之间的值:
int
-2^31
2^31 - 1
-2,147,483,648
2,147,483,647
2^32
0
2^32-1
4,294,967,295
- 1
1
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
2条答案
按热度按时间gwo2fgha1#
计算机使用二进制来存储值。让我们尝试一下二进制和十进制之间的类比:
考虑10进制(十进制)。如果数字有32位小数位,每一位都有0-9的值,那么就有10^32个可能的值(显然足够了;我们每天都使用这个系统)。
现在考虑基于2的系统,这是计算机使用的系统(出于实际原因-两种状态最容易区分,布线逻辑最简单)。每个位置(位)都有值0-1,因此有2^32个可能的值。
xxhby3vn2#
int
实际上是sql中的有符号值。范围从-2^31
通过2^31 - 1
,即-2,147,483,648
至2,147,483,647
. 确实有2^32
tis范围内的可能值。请注意,它包括0
.无符号整数的范围为
0
至2^32-1
,这取决于4,294,967,295
. 这个- 1
是因为0
包含在范围内,因此计数从0
而不是1
.可能值的范围很容易用较少的位看到。例如,3位可以表示-4到3之间的值: