【计组第四章】数值的机器运算

822 阅读5分钟

(4.1) 基本算术运算的实现

(4.1.1) 加法器

1. 全加器

  • 组成:全加器以及配以的其他必要的逻辑电路。
  • 加法单元:由3个输入量组成和两个输出量组成。
    • 操作数A和B,进位C。
    • 本位和S,向高位的进位C。
  • 是最基本的加法单元。

2. 串行加法器与并行加法器

  • 串行加法器:只有一个全加器,数据逐位串行送入加法器运算。
    • 优点:器件少,成本低。
    • 缺点:运算速度慢。
  • 并行加法器:多个全加器组成,位数的多少取决于机器的字长,数据的各位同时运算。
    • 缺点:受一个加法的最长运算时间影响。即低位的进位会影响高位的运算结果。
    • 注:提高运算速度的关键:尽量加快进位的产生和低位传递进位的速度。

总结

(4.1.2) 进位的产生于传递

(4.1.3) 并行加法器的快速进位

(4.2) 定点加减运算

(4.2.1) 原码加减运算

当原码进行加减运算时,符号位并不参与运算,只有两数的绝对值进行运算。

* (4.2.2) 补码加减运算

1. 纯整数补码求法

2. 纯小数的补码求法

除符号位外的二进制位取反后加1

3. 补码的加减运算例子

  • 参加运算的两个操作数用补码表示。
  • 符号位要参与运算.
  • 相减的话,先求出负数的补码,然后将两数的补码相加。
  • 结果运算变回原码(除符号位外,其他位取反后加1),算出十进制。

4. 原码、补码、反码互相转换

5. 移码

知二进制求移码

求移码的真值

移码 0111 1110 的真值是?
求法一:
1. 将移码转换成无符号数真值:126
2. 减去偏置值 1000 0000 对应的无符号数真值128得到移码
126-128 = -2

求法二:
移码减去其偏置值 1000 0000
  0111 1110 - 1000 0000
= 1111 1110
对应补码-2

有关真值的介绍:juejin.cn/post/684490…

* (4.2.3) 补码的溢出判断与检测方法

1. 采用一位符号

2. 采用进位位

3. 采用变形补码(双符号位补码)

双符号位的情况下,

  • 左边的符号位叫做真符,代表了数的真正符号。
  • 两个符号位都参与运算。
  • S1S2=00 ==> 结果为整数,无溢出
  • S1S2=01 ==> 正溢出
  • S1S2=10 ==> 负溢出
  • S1S2=11 ==> 结果为负数,无溢出
11 + 7 = 18
00,1011
00,0111
———————
01,0010
产生正溢出

(4.3) 带符号数的移位和舍入运算

(4.3.1) 带符号数的移位操作

我们都知道,计算机是的字节单位中是没有存放.的位置的,所以,数的移动只是数位的移动而已。

1. 原码移位操作

(4.3.2) 带符号数的舍入操作

2. 补码、反码的移位规则

回顾

(4.4) 定点乘法运算

(4.4.1) 原码一位乘法

  • 乘积P = |X| * |Y|

  • 符号A = |X| ^ |Y|

  • 写出两数的绝对值。

  • 写出乘数的最低位。

    • 为1则加被乘数;
    • 为0则加0;
  • 累加后的部分积连同乘积一起右移一位。

  • 重复n次以上步骤。n为乘数的位数。

已知:X=0.1101,Y=-0.1011,求X*Y

|X| = 00.1101,|Y|=.1011
... ===> 参考 p92

(4.4.2) 补码一位乘法

1. Booth 乘法

  • 写出两数的补码。
  • 符号位参与运算
  • 乘数的最低位后面增加一个0
  • 乘数的最低两位决定每次执行的操作。
    • 00:部分积+0,且整体右移一位。
    • 01:部分积+[X补],且整体右移一位。
    • 10:部分积+[-X补],且整体右移一位。
    • 11:部分积+0,且整体右移一位。
  • 移位规则按照补码移位规则做。
    • 负数左移补0,右移补1
  • 共做n+1次累加,n次移位,最后第n+1次移位不需要。
    • n为乘数的位数。

参考p94例题

总结

强制类型转换

(4.5.2) 补码除法运算

1. 普通除法

2. 原码不恢复余数法

  • 写出两数的绝对值,以及除数的相反数的补码(连同符号位取反加1)。
  • 商的初始值为0,位数一般和X、Y相同。
  • 第一步看被除数的符号。
    • 如果为正数:-|Y|补
    • 如果为负数:+|Y|补
  • 然后,看+-后的余数的符号;
    • 正数商1,整体左移一位。
    • 负数商0,整体左移一位。
  • 最后两位符号位按位异或,得到最后的符号。

参考p100的例题。

3. 补码加减交替法

  • 写出[X]补、[Y]补、[-Y]补
  • 第一步看[X]补和[Y]补的符号情况;
    • 异号,+[Y]补
    • 同号,+[-Y]补
  • 然后看余数和[Y]补的符号情况;
    • 同号,商1,左移一位,+[-Y]补
    • 异号,商0,左移一位,+[Y]补
  • 商的最末一位恒置为1
  • 上的小数位数为n,则运算n+1次,移位n次。

参考p103例题

总结

(4.7) 十进制整数的加法运算

8421码加法运算

结果>9,要将结果+6 (0110)校正。

余3码

(4.8) 逻辑运算与实现

1. 逻辑符号

2. 复合逻辑

(4.9) 运算器的基本组成与实例

(4.9.1) 运算器结构

(4.9.2) ALU 举例