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

补码的加减运算

运算公式:

  • [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]

运算规则:

  • 加法:[A+B] = [A]+[B]+2n-1(对A的移码和B的移码相加,最后符号位取反)
  • 减法:[A-B] = [A]+[-[B]]+2n-1(先将B的移码求补,再与A的移码相加,最后符号位取反)

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

发布了36 篇原创文章 · 获赞 34 · 访问量 3223

猜你喜欢

转载自blog.csdn.net/weixin_44611096/article/details/105345594
今日推荐