c语言加法溢出 进位在哪,为什么补码加法中最高位的进位输入与最高位的进位输出相等则不溢出?...

本文探讨了补码加法中溢出的条件,指出当最高位的进位输入与输出相等时,不发生溢出。通过分析四种不同的进位情况,如正数与负数相加、两个正数相加、两个负数相加等,得出00和11的组合不会导致溢出的结论。讨论了不同进位情况对结果的影响,并举例说明。
摘要由CSDN通过智能技术生成

满意答案

00e27ab806e4881f8254fe7ae8741834.png

wazziu3510

2015.03.24

00e27ab806e4881f8254fe7ae8741834.png

采纳率:57%    等级:9

已帮助:114人

命题是:补码加法中最高位的进位输入与最高位的进位输出相等则不溢出;

设最高位的进位输入为Cin及最高位的进位输出为Cout;

组合有四种情况:00 01 10 11;

00:没有进位输入和输出

这种情况是两数高位分别为1和0或0和0即正数和负数相加或两个正数相加,正负两数相加数值减小不会溢出。例如1010+0101=1111;两个正数相加没有进位则没有溢出结果正确。例如0101+0010=0111;

01:没有进位输入有输出

这种情况应该是相加的两个数最高位为1即两个负数相加,相加后高位变成0结果为正数,发生溢出结果错误。例如1010+1101=0111

10:有进位输入没有输出

这种情况相加的两数高位分别是0、0即两个正数,有进位之后高位变成1即负数,发生错误结果溢出;例如0101+0100=1001

11:有进位输入和输出

这种情况相加两数高位可能为0、1正负数相加结果不会超出范围不会溢出或1、1两负数相加最高位还是1为负数不溢出。例如0110+1100=0010;1100+1100=11000有进位不溢出的情况;

对几种情况分析,之后发现00和11的情况不会溢出,命题正确。

自己想的原因,可能表述或想法有漏洞,欢迎指正和补充。

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值