关于微机原理有符号数相加溢出问题怎么解决 5

请大家来做个题目:(+72)+(+98)=?01001000B+72+01100010B+9810101010B-4272+98=-42怎么可能?按照正常的法则来运算,但... 请大家来做个题目:
(+72)+(+98)=?

0 1 0 0 1 0 0 0 B +72
+ 0 1 10 0 0 1 0 B +98
1 0 1 0 1 0 1 0 B -42
72+98=-42怎么可能?
按照正常的法则来运算,但结果显然不正确,这是怎么回事呢?
设问:发生溢出,该怎么解决呢?
按照怎么样的算法才能使结果正确呢(72+98=170)
展开
 我来答
夜隐霜华
2014-03-01 · TA获得超过3922个赞
知道小有建树答主
回答量:656
采纳率:100%
帮助的人:296万
展开全部
72+98=-42,两正数相加结果为负,这就是溢出。另外一个溢出的情况是:两负数相加结果为正。

溢出产生的原因就是你所想要表示的数超过的所给位数的最大能力,八位二进制数用补码表示数的范围在+127~-128,你这道题的结果是170,已超出这个范围,所以就溢出了。解决的办法就是增加位数,这道题只要把位数增加到16位就不会溢出了。
追问
那你可以按照16位算一遍吗
追答
0000000001001000 B   +72(16位)
+ 0000000001100010 B +98(16位)
0000000010101010 B +170(16位)
GamryRaman
2023-06-12 广告
不一定。看管子的,看输出特性曲线就知道了。NJFET在恒流区有这个性质,UGS一定是负值且,UDS是正值。但耗尽型NMOS在UGS为正、负、0的情况下都能工作,后两种可以说UDS一定大于UGS,但第一种情况下未必...... 点击进入详情页
本回答由GamryRaman提供
tn瓶邪
推荐于2018-05-13 · TA获得超过1882个赞
知道小有建树答主
回答量:610
采纳率:98%
帮助的人:112万
展开全部
加法溢出:两个正数相加,如果符号位改变了,表示溢出了。
两个负数相加,符号位改变了,表示溢出了。
减法溢出:正数减负数,符号位改变,表示溢出了。
负数减正数,符号位改变了,表示溢出了。
其他,正数负数相加,无论符号位怎么变都不会溢出。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yi路过人间li
2014-03-01
知道答主
回答量:6
采纳率:0%
帮助的人:8531
展开全部
显然不是这样算的,有符号数相加时结果>128即产生溢出,这时10101010是原码=170,用原码和反码的判定是程序猿自己判定的。你可以想想为什么用反码时=-42。128-170=-42.有没有一点顿悟?170溢出的部分加上负号就是结果,这也是为什么计算机用反码可以做加法的原理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式