int类型的范围是32位的,它的最大值是2的31次方减1,为什么要减1呢?

问题描述:

int类型的范围是32位的,它的最大值是2的31次方减1,为什么要减1呢?
我知道有一个符号位,所以才是2^31 - 1,不然就是2^32 - 1了.
我想知道的是,为什么最大值不是2^31 ,而要减1呢?

最大正数是0.(后面31个1),算下来就是2^31-1