运算方法与运算器

3.1定点数的运算

3.1.1加减运算

补码加减法的依据:

image-20210808205219751

1.加减运算方法

  • 参加运算的操作数用补码表示;
  • 补码的符号位与数值位同时进行加运算:
    • 加:两数补码直接相加;
    • 减:减数补码连同符号位一起按位取反,末位加1;在与被减数的补码相加。
  • 运算结果即为和/差的补码。

2.溢出判断

1)双符号位判决法

若运算结果两符号分别用S2S1表示,则判别溢出的逻辑表达式为:VF = S1异或S2

image-20210808210941295

2)进位判决法

image-20210808211257017

3)根据运算结果的符号为和进位标志判别

4)根据运算前后的符号位进行判断

一旦溢出发生,则会

  • 在CPU中的标志寄存器中建立溢出标志;
  • 或者产生溢出中断。

3.一位全加器的实现

image-20210808212430199 image-20210808212731342

1)行波进位加法器

行波进位的4位加法器:

image-20210808212938271

2)先行进位加法器

image-20210808215334133

5.8421 BCD数加法器

BCD加法的矫正:

image-20210808222314843

6.移码加减运算

对两移码求和差时,首先对该两移码求和差;

对结果进行修正——将结果的符号取反。

image-20210808223023637

3.1.2乘法运算

1.原码乘法运算

1)原码一位乘法的法则

乘积的符号为被乘数的符号位与乘数的符号位相异或;

乘积的绝对值为被乘数的绝对值与乘数的绝对值之积。image-20210808223556835

2)原码一位乘法的实现思路

image-20210808224111298

3)原码一位乘法的运算过程

image-20210808224205061

4)原码一位乘法器框图

image-20210808224623175

2.补码乘法运算

image-20210809220046893 image-20210809220615677

2)布斯法

image-20210809220938916

补码一位乘运算规律:image-20210809223502684

image-20210809221747696

补码一位乘法器(Booth算法)框图:

image-20210809225124760

3.阵列乘法器

1)手算及单元电路

image-20210809234946121

2)绝对值(无符号数)阵列乘法器

image-20210809235107364

3)带符号数的阵列乘法器

求补电路:E为低电平0,输入输出一样;E为高电平,输出按位取反加一。

image-20210809235604397 image-20210809235753917

3.1.3除法运算

实现方式: 原码,补码(不要求)

前提条件:除数不能为0 ,商可以表示

1.原码除法运算

1)原码除法的法则

  • 除数 != 0
  • 定点纯小数时,|被除数| < |除数|
  • 定点纯整数时,|被除数| >=|除数|
  • 商的符号=被除数的符号 异或 除数的符号
  • 商| = |被除数| / |除数|
  • 将商的符号与商的值拼接在一起
  • image-20210810205033055

2)恢复余数法

判断溢出:被除数前四位是否小于除数

image-20210810210726625

3)加减交替法

image-20210810212236386

加减交替法的运算法则:

image-20210810212428314 image-20210810220455628

加减交替法除法器框图:image-20210810220751042

3.阵列除法器

3.2算数逻辑部件

3.2.2算术逻辑部件

74LS181(4位ALU)

3.2.3运算器的结构

1. 3种基本结构

单总线结构、双总线结构、三总线结构image-20210810224050807

2.计算机简单框图

3.3浮点运算

3.3.1加减运算

1.浮点数加减法的运算法则

  • 对阶:小阶对大阶——小阶码+1,尾数右移1位,直到增大到与大阶码相同。

  • 尾数加减运算:加法;减法:减数的符号取反(求补),与被减数相加。

  • 规格化

    • 左规:image-20210810225651716
    • 右规:image-20210810225758803
  • 舍入处理

    • 截(尾)断法: 将需丢弃的尾数低位丢弃。
    • 末位恒置1法:使要保留的尾数最低位永远为1。
    • 0舍1入法:image-20210810230145421
image-20210810230443887

3.浮点运算实例

3.3.2乘除运算

1.浮点乘法运算

  • 两乘数一定是规格化数。若一个乘数为0,则乘积必为0。
  • 求乘积的阶码:Ez = Ex + Ey; 判断积的阶码是否溢出:上溢,下溢。
  • 求乘积的尾数:两乘数的尾数相乘。
  • 规格化乘积的尾数。image-20210811225500046

浮点乘法流程图:

image-20210811225711509

2.浮点除法运算

  • 被除数、除数一定是规格化数。若被除数为0,则商必为0。
  • 求商的阶码:Ez = Ex - Ey; 判断商的阶码是否溢出:上溢,下溢。
  • 求商的尾数:Mz = Mx / My。
  • 规格化商的尾数。

浮点除法流程图: