发布网友 发布时间:2023-11-23 17:22
共4个回答
热心网友 时间:2024-11-23 10:36
int 是有符号整型,在C语言学习中一般认为int为32位,最高位为符号位:如果数大于0,则最高位为0,如果数小于0,则最高位为1。在判断数值范围时,不用考虑负数采用补码形式存储,因为补码和原码是一一对应的。当最高位是1,即为负数,后面最多还有31个1,而这31个1的加权值之和为2^31-1,而负数最高位也为1,该位在再次进位时仍满足负数的条件,即可将最高位看成数值位,故最小值为-2^32,最大值整数最高位必须一值为1,且原码等于补码,这就*了整数的最大值31位的1相加,之和为2^31-1。追问没懂啊
热心网友 时间:2024-11-23 10:37
在计算机内部,数值为负的整数采用补码进行表示。而负数的补码书原码的每一位取反后+1.故int32位表示的范围是-2的31次方到2的31次方-1热心网友 时间:2024-11-23 10:37
我先解答一下为什么最大值是2的31次方-1。int占四个字节共32位,最高位用0表示符号位,其余31位为1,那么二进制的31位1最大值就是:2^30+2^29+2^28+2^27+......+2^3+2^2+2^1=2^31-1热心网友 时间:2024-11-23 10:38
因为第一位代表符号位,所以正数最大只能第一位0,后面31一个1,所以是2的31次方-1.