【学习计算机组成原理】补,原,移码的加减运算

补码的加减运算

运算公式:

  • [A+B] = [A] + [B] (mode 2n
  • [A-B] = [A] + [-B] (mode 2n

规则:

  • 加减运算统一,全用加法运算
  • 符号位和数值位参加运算

变补(求补)

这里引出一个概念,《变补》,根据上面A减B的补码等于A的补码加负B的补码,为了描述方便,也可以表述为A减B的补码等于A的补码加B的变补,这样描述,直接用A和B,不用A和-B,更加直观。

[X]变补 = [-X]

变补类似补码,变补是全部取反再加1,无符号位一说

实现减法的工作,主要在于求-B的补码([-B]=B全部取反+1)

溢出判断

假定是4位

  1. 计算(-7)+(-6)
    -7的补码是1001,-6的补码是1010
    1001加1010得1 0011,取后4位,结果是3。

总结溢出现象:

  • 最高位和次高位的进位不同,上面最高位进位1,次高位进位0
  • 和的符号位和加数的符号位不同
  1. 计算(-3)+(-5)
    -3的补码是1101,-5的补码是1011
    1101加1011得1 1000,结果是-8。

正确,最高位和最低位进位都是1,和得符号位和加数得符号位都是1。

采用变形补码

变形补码是为了保留中间结果
机器里,在做运算的过程当中,多添一个(或两个)符号位,这种由添符号位而得到的补码就是变形补码
假定4位,计算6+5
6的补码是0110,5的补码是0101,相加得到是1011,结果是-5,错误。
如果用两个符号位表示,对应的变形补码是01011,第一个符号位表示符号,第二个符号位作为数值部分,结果是11。
溢出判断:

  • 结果的两个符号位不同

原码的加减运算

规则:

  • 符号位和数值部分分开处理
  • 仅对数值部分进行加减运算,符号位起判断和控制作用
  • 加法:同号求和,异号求差
  • 减法:异号求和,同号求差

求和:

  1. 数值位相加
  2. 符号取被加数(被减数)的符号。
  3. 最高位有进位表示溢出

求差:

  1. 被加数(被减数)加上加数(减数)的变补
  2. 最高数值位产生进位表示结果为正,所得数值位正确
  3. 最高数值位没有产生进位表示结果为负,对结果求补,还原为绝对值形式的数值位
  4. 最高数值位产生进位,符号取被加数(被减数)的符号。
  5. 最高数值位没有产生进位,符号取被加数(被减数)的符号取反。

例如:
(+4) - (-2)

  1. 符号位异号,做减法,所以求和
  2. 数值位相加4+2=6
  3. 符号取4的符号(+)
  4. 结果是(+6)

又如:
(-2)-(-4)

  1. 符号位相同,做减法,所以求差
  2. 2的原码是0010,4的变补是1100,两数相加0 1110。
  3. 无进位,对1110求补,0010,值为2
  4. 符号取2的符号取反,(+)
  5. 结果是(+2)

移码的加减运算

运算公式:

  • [A]+[B] = [A+B] (mode 2n
  • [A]-[B] = [A-B] (mode 2n

推导过程:
[A]+[B]
= 2n-1+A+2n-1+B
= 2n+A+B
= [A+B]

[A]-[B]
= [A]+[-[B]]
= 2n-1+A+2n-[B]
= 2n-1+A+2n-2n-1-B
= 2n+A-B = [A-B]


运算公式2:

  • [A+B] = [A]+[B]-2n-1
  • [A-B] = [A]-[B]+2n-1

推导过程:
[A+B]
=A+B+2n-1
=A+2n-1+B+2n-1-2n-1
=[A]+[B]-2n-1

[A-B]
=A-B+2n-1
=(A+2n-1)-(B+2n-1)+2n-1
=[A]-[B]+2n-1
= [A]+[-[B]]+2n-1
=[A]+[[B]]变补+2n-1

溢出判断:
A与B的符号位相同,且与所得的结果的符号位也相同时,发生溢出

  • 15
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序鸡

如果帮到您,点个赞鼓励一下吧。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值