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

如题所述

你这个逻辑就是错误的,我来解释给你听为什么要减1,32位去掉一个符号位最大是31位1,也就是要把这31位1表示为10进制相加.你要知道第一位1的十进制值是1乘以2的0次方.....,以此类推,第31位只是1乘以2的30次方.....,看到没有,我们假设这个相加后的值为A?假如这个31位二进制再加1的话,就是第32位为1,后面31个零.也就是2的31次方,我们假设它为B(第32位的十进制为1乘以2的31次方,不是32次方噢).所以A的值,不就是B减1,也就是2的31次方减1啦。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-27
unsigned
int
能表示的最大值是2^32-1。至于原因,看了下面的例子就会明白:
假设一个单片机用二位二进制来表示数,很明显就是00,01,10,11这四种情况,分别表示0,1,2,3这四个数。
这就对了,原来0也占用了一种状态,总共能表示2^32种状态的16位二进制数就只能表示0~2^32-1,即
0~32767
了。
第2个回答  2018-04-27
从 1到 7FFF FFFFh 只有 2^31-1 个不同的正数。
负数是从8000 0000h~FFFF FFFFh, 共 2^31 个负数。
“正数”个数加“负数”个数加“0”总共有 2^32 个不同的数。本回答被网友采纳
第3个回答  2018-04-29
可以。