补码加减法判断进位判断是否溢出的总结

本文总结了补码加减法中判断溢出的方法,通过分析补码表示的负数和正数相加减,指出当数据位高位进位与符号位进位不一致时发生溢出,可以通过SF与C的异或为1来判断。同时讨论了正数与正数相减等同于正数与负数相加不会溢出的情况,并提及了设计PSW中SF与C的算式表达溢出的思考。
摘要由CSDN通过智能技术生成

通常我们说的加减法进位方式判断是否溢出一般指的都是补码方式运算下的。无论是一位符号位还是两位符号位,逻辑是相同的。

先由一位符号位说起。
假设是5位机器位,一位用作符号位,四位用作数据位,那么数据的表示范围是:
24 ~ 241
即:-16~15

因此我们上来就看一个溢出的例子,形成一种直观的感受:
-8-9 = -17,果断是溢出的。

补码表示
1,1000
1,0111
=0,1111
得到的数字是+1.
具体发生了什么,你看,符号位发生了进位。但数据位的运算并没有进位
两个负数的符号位一进位,加和的数据居然由负变正了,所以肯定是发生了溢出。如果数据位也进位,就会让符号位还是1,看起来,符号位没有变化,因此检查不出来已经发生了进位。

而在补码运算中,数据位高位为1,其实是比较小的数,除了-8这种刚好卡在边界的,其他较大的,如:

[0]=00000[1]=11111
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值