计算机组成原理(科学出版社) 第二章:运算方法和运算器

强颜欢笑 提交于 2019-12-21 21:05:22

复习

20190630

一、 原码、补码、反码、移码

 

真值(十进制数) 转换为真值(二进制数)最好补全为八位,对应的原码就是将最高位写成符号位(还是八位)

具体思维导图如下:

原码求补码的简便方法:除符号位之外,从最低位开始,遇第一个1之前的各位保持不变,其余各位按位取反

进制之间的转换,思维导图如下:

二、补码加减法

  1. 补码加法公式:[X]补 + [Y]补 = [X+Y]补    (mod  2n+1)

定理:任意两数补码之和等于该两数之和的补码

2.  补码的乘法和除法就是将[X]的补码向左或者右移位一次,符号位移走之后照原来的补上,这就是算术移位。

算术移位:

由[X]补求[X/2]补

—  [X]补    =   10101000

—  [X/2]补 =    110101000

3. 补码的减法公式:[X — Y]补 = [X]补 — [Y]补 = [X]补 + [—Y]补

又知道,[—Y]补 等于[Y]补 取反,末位加1,所以可化为加法运算

4. 注意检测溢出,单双符号位

 

三、 定点运算器

1. 逻辑运算

(1). 逻辑非

  • 逻辑非又叫求反,按位取反

(2). 逻辑加

  • 逻辑加又叫逻辑或,常用+来表示

(3). 逻辑乘 

  • 逻辑乘又叫逻辑与,常用 。来表示 

(4). 逻辑异

  • 对两数进行逻辑异就是按位求他们的模2和,所以逻辑异又称为按位加,常用记号来表示

2. 多功能算术/逻辑运算单元ALU

(1). 串行加法器的不足:速度慢

(2). ALU的设计思想:

  • 增加函数发生器
  • 增加逻辑运算功能
  • 增加先行进位

(3). 多功能算术/逻辑运算单元ALU(四)——总体设计

  • 单级先行进位方式:片内先行进位,片间串行进位。
  • 两级先行进位方式:片内先行进位,片间先行进位。

3. 内部总线

4. 定点运算器的基本结构

(1). 单总线结构的运算器

(2). 双总线结构的运算

(3). 三总线结

 

六、 浮点运算器

(1). 浮点加减法运算  (重点)

运算步骤如下:

1. 0操作数的检查,看有无简化操作的可能

2. 比较阶码大小并完成对阶(小阶向大阶对齐);

3. 尾数进行加减运算

4. 结果规格化并进行舍入处理

       注:

    • 浮点数中  零操作数的含义:当一个浮点数的尾数为0,则不论其阶码为多少,该浮点数的值都为0.
    • 当阶码的值遇到比它所能表示的最小数还小的值时,不管尾数现在值是多少,计算机都把该浮点数看成0,通常叫做机器0,这时计算机一般将该浮点数的所有各位清0。

                

浮点数规格化的定义是1/2≤|M|<1,显然,是真值的规格化。变成码制就不一定是规格化的数了。采用双符号位时,对正数有M=00.1øø…ø。对于负数,其补码形式为11.0øø…ø。可见,只要对运算结果的符号位和小数点后的第一位进行比较,如果他们不等,即为00.1øø…ø或11.0øø…ø,就是规格化数;如果他们相等,即00.0øø…ø或11.1øø…ø,就不是规格化数,这种情况下,尾数左移实现规格化,叫向左规格化,规则为:尾数左移1位,阶码减1。

当出现01. øø…ø或10.øø…ø时,在定点数中是溢出,但浮点数中则是非规格化数,表示结果绝对值大于1。此时需向右规格化,规则为:尾数右移一位,阶码加1

无论左移还是右移,符号位保持不变。

    5. 舍入处理(对阶和向右规划时):

    • 就近舍入(0舍1入):类似“四舍五入”,丢弃的最高位为1,进1
    • 朝0舍入:截尾
    • 朝+∞舍入:正数多余位不全为“0”, 进1;负数,截尾。
    • 朝-∞舍入:负数多余位不全为“0”, 进1;正数,截尾

           6. 溢出判断和处理

  • 浮点数的溢出是以其阶码溢出表现出来的,在加、减法运算过程中要检查是否产生了溢出:若阶码正常。加(减)法运算正常结束;若阶码溢出,则要进行相应处理。另外对尾数的溢出也需要处理。
  • 阶码上溢,一般将其认为是+∞和-∞。
  • 阶码下溢,则数值为0.
  • 尾数上溢,两个同符号位的数相加,处理方法是位数右移,阶码加一
  • 尾数下溢,尾数右移时,最低位从最高位溢出,要进行舍入处理。

(2). 浮点乘除法运算

 

(3). 对阶小数点

(4). 尾数求和

(5). 防溢出

(6). 结果规划

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!