顶点运算——加减法运算

补码加减运算公式

定点运算——加减法运算

即:A + B = [[A] 补码+ [B]补码]补码,所以求和运算全部用补码的加法,结果是结果的补码
定点运算——加减法运算

溢出判断

一位符号位判断溢出
  1. 定义:参加操作的两个数符号相同,其结果的符号与原操作数的符号不同,
  2. 硬件实现:
    最高有效位的进位 异或 符号位的进位 = 1
  3. 情况分类
符号位 数值位最高位 溢出判定结果
正数 0,1100与0,1011 0与0,不进位 1与1,进位 0⊕1 = 1发生溢出
正数 0,1100与0,0011 0与0,不进位 0与1,不进位 0⊕0 = 0不发生溢出
负数 1,1100与1,1011 1与1,进位 1与1,进位 1⊕1 = 0不发生溢出
负数 1,0100与1,0011 1与1,进位 0与0,不进位 1⊕0= 1发生溢出

总结:

  1. 对于正数来说,0表示0,1表示1;但是对于负数来说,1表示0,0表示1.
  2. 负数发生溢出,最高位不会进位,符号位一定会进位;
  3. 正数发生溢出,最高位一定会发生溢出,符号位不发生改变。
两位符号位判断溢出(单符号位判定溢出的改良版)
  1. 定义:由数值部分求补码,真值 加上2n,仅仅生成一个符号位,要生成两个符号位,改为:真是加上2n+1多一个符号位。

以下是常见补码的求法——加上2n+1次方
定点运算——加减法运算
以下是移码的常见求法——加上2n
定点运算——加减法运算
以下适用于判定是否溢出的两位符号位的求法——加上2n+2
定点运算——加减法运算

  1. 原则:
  • 结果的两个符号位相同,未溢出,对比单符号位的进位判定,如果都进位或者都不进位,那么就没有溢出
  • 定点运算——加减法运算
  • 结果的两个符号位不同,溢出,对比单符号的进位判定,对于正数是符号位没有进位,但是数值位进位溢出;对于负数是,符号位进位,数值位没有进位,溢出
    定点运算——加减法运算
  • 注意:对于最后的运算结果,最高位才是真正的符号

补码加减法的硬件配置

定点运算——加减法运算

说明:

  1. A为寄存器ACC,保存被加数;
  2. X为模型机寄存器X,保存加数或者被减数;
  3. GA和GS标记,加法GA = 1,减法GS = 1;
  4. 求补控制逻辑,用于支持将减法转成负数的补码;

注:上述为个人上课的总结与回顾

相关文章: