每个数据类型都有一个范围,如下图所示。
首先,以3位数字为例子,计算如下。
当最高位为0时,表示正数,表示如下:
-
000:正零,数值为0
-
001:正一,数值为1
-
010:正二,数值为2
-
011:正三,数值为3
当最高位为1时,表示负数,其数值计算方式为:用2的3次方(即8)减去该二进制数对应的无符号数值。
-
100:8 - 4 = 4,但符号位为1,所以是-4
-
101:8 - 5 = 3,但符号位为1,所以是-3
-
110:8 - 6 = 2,但符号位为1,所以是-2
-
111:8 - 7 = 1,但符号位为1,所以是-1
接下来以int型为例子,计算如下:
当最高位为0时,剩下31位能表示的最大数字为31个1组成的数,补码同样为31个1组成的数字,大小为2^0+2^1+...+2^30,为2^31-1。
当最高位为1时,其大小为-【2^32 - 该二进制数对应的无符号数值】,想要最小,即该二进制数对应的无符号数值最小,为1000 0000 0000 0000 0000 0000 0000 0000,大小为-(2^32-2^31)= -2^31
其他数据类型同理。