2025-11-20 06:40:36
int的最大值是,这个数在32位系统中成立。当系统是64位时int最大值会变成,因为64位int实际占8字节,但有效位数还是31位。计算方式是2的31次方减1,也就是222...(连乘31次)再减1。而-int的最大值是-,这个数用了32位全部位数,其中1位是符号位,剩下的31位表示数值。这个数等于-2的31次方,所以绝对值比int最大值大1。
为什么int最大值是?因为计算机用二进制存储整数,32位int有31位数值位+1位符号位。符号位0表示正数,1表示负数。当所有31位数值位都为1时,数值就是2^31-1=。如果符号位是1且数值位全1,那结果就是-2^31=-。这里有个关键点:负数最大值比正数最大值多1,因为要留出连续表示空间。比如-1和1之间没有空位,所以负数能多表示一个数。例如在32位系统中,最大的负数-刚好占用全部32位,而最大的正数只用了31位数值位+1位符号位。数据来源是IEEE 754标准对整数类型的定义,以及C/C++语言规范中关于int类型的规定。
本题链接: