c语言:int的范围为什么是-2的31次方到2的31次方-1

 我来答
stormpang
推荐于2018-02-27 · TA获得超过448个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:103万
展开全部
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。
追问
没懂啊
zjeleven
2015-11-27 · TA获得超过108个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:102万
展开全部
在计算机内部,数值为负的整数采用补码进行表示。而负数的补码书原码的每一位取反后+1.故int32位表示的范围是-2的31次方到2的31次方-1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
汉乐松90
2023-05-15
知道答主
回答量:1
采纳率:0%
帮助的人:224
展开全部
我先解答一下为什么最大值是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
表示负数时,最高位为固定的符号位1,因为-0不需要表示,就用这个来表示-2^31。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨诺与诺
推荐于2017-09-28 · TA获得超过1213个赞
知道小有建树答主
回答量:2179
采纳率:33%
帮助的人:675万
展开全部
因为第一位代表符号位,所以正数最大只能第一位0,后面31一个1,所以是2的31次方-1.
而负数只要第一位是1,后面随便变,所以是-2的31次方。
追问
为什么31个1就是2的31次方减1?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式