从编程的角度看,正整数i
会 使 i + 1 < i
吗?
我们知道计算机内部是用0101这样的来表示所有数据的。正整数,应该是定义成整型,不管是 short 、int 、long long
;他们都有自己的内存大小。
我们以常见的int
为例,我们知道其占4个字节,每个字节8位。
我们还知道,在计算机内,第一个位表示正负号的,0
表示正数,1
表示负数;均以补码的形式表示。
我们看 int
能表示的最大正数 是谁呢?
0111 1111 1111 1111 1111 1111 1111 1111
2^31 - 1
那这个数加1
呢?
1000 0000 0000 0000 0000 0000 0000 0000
那这个数,表示啥呢?
第一位是符号位。一看 1,负数,接下来咋办?
是不是要求这个负数代表是多少?
怎么求呢?
减一取反对不对?
减一:
0111 1111 1111 1111 1111 1111 1111 1111
取反:
1000 0000 0000 0000 0000 0000 0000 0000
这是 2^31
所以是 -2^31
所以是有这样的 i
存在的。这个数是计算机所能表示的最大正整数。