【总结】补码在运算中溢出的情况(单符号位补码+双符号位补码)

总结补码在运算中溢出的情况
在此默认补码为有符号数
A.单符号位补码
【规律通用】不同则溢出
(一)移位运算
补码右移不会溢出,仅左移时可能溢出
【实操方法】看补码的高2位直接出结果:若高2位数(即符号位和最高数位)不相同[01或10],则左移会溢出(否则不溢出)

(二)加减运算
补码减法转为加法,后用补码加法的判断溢出方法,如下
【实操方法】(1)直接看两数符号和±
若 ①2个同号数相减 或②2个异号数相加
则一定不溢出(否则可能溢出)
(2)符号位与数值位分别求和,看符号位与最高数位的进位值,若这2个值不相同[01或10],则溢出(否则不溢出)

B.双符号位补码(变形补码/模4补码)
【核心逻辑】看双符号的运算结果的2个符号位是否相同,若不同[01或10]则溢出;否则不溢出
(一)移位运算
(1)【铺垫】①双符号位补码的算术移位规则:仅低符号位参与移位。其余同单,正补码补0;负补码左移补0,右移补1
②双符号位补码用00表示正数,11表示负数,且高符号位永远代表真正的符号位
③运算结果为01为正溢出,10为负溢出

(2)双符号位补码移位的判断溢出方法
【实操方法】对双符号位补码进行移位,结果也有2个符号位,若这2个符号位不同[01或10],则溢出(否则不溢出),此时最高位符号位代表真正的符号

(二)加法运算
(1)【铺垫】双符号位补码加法规则
①2个符号位也参加运算
②高位符号位产生的进位直接丢弃
【注意:符号位的进位与溢出之间无直接关系!】

(2)双符号位加法判断溢出方法
【实操方法】2个双符号位补码相加,运算结果也有2个符号位,若这2个符号位不同[01或10],则溢出(否则不溢出),此时最高位符号位代表真正的符号

双符号位补码的算术右移,好像也不会溢出,下面是关于此的解释

在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值