欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

加减运算&溢出判断(计算机组成原理16)

程序员文章站 2022-07-15 14:38:35
...

加减运算&溢出判断

视频链接地址:
https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502

前言

在本篇中,你将掌握

  • 原码、补码的加减法运算
  • 加法运算的三种溢出判断
  • 符号扩展的实现

加减运算&溢出判断(计算机组成原理16)

1 原码的加减运算

加减运算&溢出判断(计算机组成原理16)
注意看上图,14+(-14)的原码加法是错误的

原码的加法运算:
  正+正 = 绝对值做加法,结果为正
  负+负 = 绝对值做加法,结果为负
  正+负 = 绝对值大的减绝对值小的,符号位同绝对值大的数

原码的减法运算,“减数”符号取反,转变为加法

可以看出,原码的加法逻辑太难了,所以计算机中通常用补码来实现加减运算

2 补码的加减运算

2.1 补码加减

[ A − B ] 补 = [ A ] 补 + [ − B ] 补 [A-B]_{补} = [A]_{补} + [-B]_{补} [AB]=[A]+[B]
对于补码来说,无论加法还是减法,最后都会转变成加法,由加法器实现运算,符号位也参与运算。

且对于8位机器字长的补码运算会出现溢出,(-128至127)

2.2 溢出判断

加减运算&溢出判断(计算机组成原理16)
在补码加法运算中,会出现溢出这种问题,可以将溢出理解为“循环补码”
  比如三位机器数的加法,3+3 = 011 + 011 = 110 = -2

因此,我们可以得到这样的规律:
  只有“正数+正数”才会上溢——正+正=负
  只有“负数+负数”才会下溢——负+负=正

在此,计算机判断溢出的方式有三种:

  1. 方法一:采用一位符号位,离散数学方式进行逻辑表达式计算,而在硬件实现上也只需与门、或门、非门就可以实现逻辑表达式的计算
    加减运算&溢出判断(计算机组成原理16)
  2. 方法二:采用一位符号位,根据数据位进位情况判断溢出
    加减运算&溢出判断(计算机组成原理16)
  3. 方法三:采用双符号位,正数的符号位为00,负数的符号位为11
    在相加得到结果后,如符号位变成01则表示正确的符号位为0,实际的符号位为1,发生了上溢

注意:实际存储时只存储1个符号位,运算时会复制一个符号位
加减运算&溢出判断(计算机组成原理16)
双符号位补码又称:模4补码
单符号位补码又称:模2补码

2.3 符号扩展

避免溢出可以使用符号扩展的方法:将短数据扩展为长数据
加减运算&溢出判断(计算机组成原理16)

3 小结

加减运算&溢出判断(计算机组成原理16)
本篇重点:
(1)原码、补码的加减法运算
(2)溢出判断的三种方法,其中第三种:双符号位方法中注意理解模4补码、模2补码的概念
(3)符号扩展的实现,注意负整数反码、补码的补位添1,负小数补码添0、反码添1