在32位的系统,int类型最大值正数为2147483647,加1后溢出的结果 -2147483648,这是为什么? 5

10000000000000000000000000000000怎么就能代表-2147483648呢?... 1000 0000 0000 0000 0000 0000 0000 0000 怎么就能代表-2147483648呢? 展开
 我来答
小强无敌abc
2016-10-14
知道答主
回答量:1
采纳率:0%
帮助的人:1167
展开全部
计算机中用补码来运算加减法,用补码计算-2147483647-1和2147483647+1都得到1000 0000 0000 0000 0000 0000 0000 0000,而加法溢出的结果在范围[-214748368,2147483647]中,故得到-214748368
做而论道
高能答主

2022-06-07 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部

不用弄那么多位了,你只要弄清楚八位的补码,即可。

八位二进制:0000 0000~1111 1111。

对应十进制:0 ~ 255,共 256 个。

它们以补码,分别代表:-128 ~ +127。

看下面的表:

 八位的补码    代表十进制数

255 = 1111 1111    -1

254 = 1111 1110    -2

。。。

129 1000 0001    -127

128 = 1000 0000  -128----负数“极大值”

127 = 0111 1111   +127----正数极大值

126 = 0111 1110    +126

。。。

 2 = 0000 0010     +2

 1 = 0000 0001     +1

 0 = 0000 0000    0

-------------------

看到了吗?

最大值+127,加上 1,就得到了-128。

这与你说的,正数到负数的变化,雷同。

在补码中,正数、负数的交接点,就在这!

-------------------

补码的定义式:

  负数X的补码=模(2^n)-| X |

当 n=8,[-128]补 = 256-128

         = 128 = 1000 0000B 

你用 n=32,算一下,就能找到这个交接点。

肯定和你给出的数字,完全相同。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chi44214
2013-01-28
知道答主
回答量:17
采纳率:0%
帮助的人:5.8万
展开全部
-2^16 ~ 2^16 -1这是范围,1000 0000 0000 0000 0000 0000 0000 0000,最前一位是符号就是代表负数,是0代表正数,所以。。。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liwh_dl
2013-01-28 · 超过18用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:46.5万
展开全部
计算机中有符号数是用补码表示,最高位是符号位,后面是反码+1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式