3.基本运算部件,定点数的加减运算

目录

一. 算术逻辑单元,加法器

二. 串行加法器和并行加法器

三. 补码加减运算器

四. 原码,补码的加减运算

(1)原码的加减法运算

(2)补码的加减法运算

五. 溢出判断

(1)采用一位符号位

(2)采用一位符号位

(3)采用两位符号位

六. 符号扩展

七. 标志位的生成


一. 算术逻辑单元,加法器

算术运算:加、减、乘、除等;逻辑运算:与、或、非、异或等;辅助功能:移位、求补等。

3.基本运算部件,定点数的加减运算_第1张图片

对于逻辑运算,我们可以用门电路实现,输入分别是高低电平:

3.基本运算部件,定点数的加减运算_第2张图片

3.基本运算部件,定点数的加减运算_第3张图片

以上逻辑电路符号必须熟记!优先级:与>或>非。

基于异或运算的天然逻辑:奇偶校验位(即:n个位异或运算,结果为1说明有奇数个1,结果为0说明有偶数个1)。

3.基本运算部件,定点数的加减运算_第4张图片

一位全加器(i从1开始,从左往右):

3.基本运算部件,定点数的加减运算_第5张图片

根据逻辑表达式可以画出电路图(右图是简化版本):

3.基本运算部件,定点数的加减运算_第6张图片

二. 串行加法器和并行加法器

串行加法器:只有一个全加器,数据逐位串行送入加法器中进行运算。进位触发器用来寄存进位信号,以便参与下一次运算。如果操作数长n位,加法就要分n次进行,每次产生一位和,并且串行逐位地送回寄存器。

3.基本运算部件,定点数的加减运算_第7张图片

串行进位的并行加法器:把n个全加器串接起来,就可进行两个n位数的相加。
串行进位又称为行波进位,每一级进位直接依赖于前一级的进位,即进位信号是逐级形成的。

3.基本运算部件,定点数的加减运算_第8张图片

并行进位的并行加法器:各级进位信号同时形成,又称为先行进位、同时进位。

3.基本运算部件,定点数的加减运算_第9张图片

三. 补码加减运算器

在加法器的基础上增加一个多路选择器MUX:

3.基本运算部件,定点数的加减运算_第10张图片

3.基本运算部件,定点数的加减运算_第11张图片

无符号整数的加法/减法也可用该电路实现。
n bit无符号数X+Y,按位相加即可
n bit无符号数X-Y:将减数Y全部按位取反,末位+1,减法变加法。
 

3.基本运算部件,定点数的加减运算_第12张图片

四. 原码,补码的加减运算

(1)原码的加减法运算
  • 正+正→绝对值做加法,结果为正,可能会溢出
  • 负+负→绝对值做加法,结果为负,可能会溢出
  • 正+负→绝对值大的减绝对值小的,符号同绝对值大的数
  • 负+正→绝对值大的减绝对值小的,符号同绝对值大的数

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

  • 正-负→正+正
  • 负-正→负+负
  • 正-正→正+负
  • 负+正→负-负
     
(2)补码的加减法运算

对于补码来说,无论加法还是减法,最后都会转变成加法,由加法器实现运算,符号位也参与运算。

五. 溢出判断

基本判断逻辑:只有“正数+正数”才会上溢――正+正=负;只有“负数+负数”才会下溢――负+负=正。

(1)采用一位符号位

设A的符号为As,B的符号为Bs,运算结果的符号为Ss;则溢出逻辑表达式为

V=A_sB_s\overline{S_s}+\overline{A_s}\cdot \overline{B_s}S_s

若v=0,表示无溢出;若v=1,表示有溢出。第一项代表正+正=负,第二项代表负+负=正。

(2)采用一位符号位

根据数据位进位情况判断溢出。

符号位的进位C_s 最高数值位的进位C_1
上溢 0 1
下溢 1 0

判断时采用异或运算即可:V=C_1\bigoplus{C_s}

(3)采用两位符号位

正数的符号位:00,负数的符号位:11.

如果运算完两位符号位不相同则可以知道发生了溢出错误。

双符号位补码又称模4补码;单符号位补码又称模2补码。实际存储时只存储1个符号位,运算时会复制一个符号位。

六. 符号扩展

3.基本运算部件,定点数的加减运算_第13张图片

七. 标志位的生成

  • OF (Overflow Flag)溢出标志。溢出时为1,否则置0。
  • SF (Sign Flag)符号标志。结果为负时置1,否则置0.
  • ZF (Zero Flag)零标志,运算结果为0时ZF位置1,否则置0.
  • CF (Carry Flag)进位/借位标志,进位/借位时置1,否则置0.
     

3.基本运算部件,定点数的加减运算_第14张图片

你可能感兴趣的:(计算机组成原理,1024程序员节,计算机组成原理)