Presentation is loading. Please wait.

Presentation is loading. Please wait.

第6章 计算机的运算方法 6.1 无符号数和有符号数 6.2 数的定点表示和浮点表示 6.3 定点运算 6.4 浮点四则运算

Similar presentations


Presentation on theme: "第6章 计算机的运算方法 6.1 无符号数和有符号数 6.2 数的定点表示和浮点表示 6.3 定点运算 6.4 浮点四则运算"— Presentation transcript:

1 第6章 计算机的运算方法 6.1 无符号数和有符号数 6.2 数的定点表示和浮点表示 6.3 定点运算 6.4 浮点四则运算
第6章 计算机的运算方法 6.1 无符号数和有符号数 6.2 数的定点表示和浮点表示 6.3 定点运算 6.4 浮点四则运算 6.5 算术逻辑单元

2 6.1 无符号数和有符号数 一、无符号数 寄存器的位数 反映无符号数的表示范围 8 位 8 位无符号数能表示的数据范围是 0 ~ 255
6.1 无符号数和有符号数 一、无符号数 寄存器的位数 反映无符号数的表示范围 8 位 8 位无符号数能表示的数据范围是 0 ~ 255 16 位 16 位无符号数能表示的数据范围是 0 ~ 65535

3 6.1 二、有符号数 1. 机器数与真值 真值:一般书写的数 机器数:机器中表示的数,要解决在计算机内部数的正、负符号和小数点运算问题。
原码 反码 补码 移码

4 真值 机器数 带符号的数 符号数字化的数 0 1011 + 0.1011 1 1011 – 0.1011 0 1100 + 1100
真值 机器数 带符号的数 符号数字化的数 小数点的位置 小数点的位置 + 1100 小数点的位置 – 1100 小数点的位置

5 6.1 2. 原码表示法 (1) 定义 0,x 2n > x ≥ 0 [x]原 = 2n - x 0 ≥ x > -2n
整数 x 为真值 n 为整数的位数 正号 x = +1110 [x]原 = 0 , 1110 用 逗号 将符号位 和数值部分隔开 负号 x = [x]原 = = 1 , 1110

6 续上 0,x 1 > x ≥ 0 [x]原 = 1 - x 0 ≥ x > -1 = 1 + | x | 小数 x 为真值 如 正号
用 小数点 将符号位和数值部分隔开 负号 x = [x]原 = =

7 6.1 (2) 举例 例 6.1 已知 [x]原 = 1 . 0011 求 x 解: 由定义得
小数点, 说明是小数 例 已知 [x]原 = 求 x 解: 由定义得 x = 1 [x]原 = = 逗号, 说明是整数 例 已知 [x]原 = 1 , 求 x 解: 由定义得 x = 24 [x]原 = ,1100 =

8 6.1 例 6.3 已知 [x]原 = 0.1101 求 x 解: 根据 定义 ∵ [x]原 = 0.1101 ∴ x = + 0.1101
解: 设 x = [ ]原 = x = [ ]原 = 同理,对于整数 [+ 0 ]原 = 0,0000 [ 0 ]原 = 1,0000 ∴ [+ 0]原 ≠ [ 0]原

9 6.1 原码的特点: 简单、直观 但是用原码作加法时,会出现如下问题: 要求 数1 数2 实际操作 结果符号 能否 只作加法 ?
要求 数 数 实际操作 结果符号 加法 正 正 加法 正 负 可正可负 加法 负 正 可正可负 加法 负 负 能否 只作加法 ? 找到一个与负数等价的正数 来代替这个负数 就可使 减 加

10 6.1 3. 补码表示法 (1) 补的概念 时钟 逆时针 顺时针 + 9 6 15 - 3 6 3 - 12 3
可见 3 可用 + 9 代替 减法 加法 称 + 9 是 3 以 12 为模的 补数 记作 3 ≡ + 9 (mod 12) 时钟以 12为模 同理 4 ≡ + 8 (mod 12) 5 ≡ + 7 (mod 12)

11 结论 6.1 一个负数加上 “模” 即得该负数的补数 一个正数和一个负数互为补数时 它们绝对值之和即为 模 数 计数器(模 16) 1011 1011 – 1011 + 0101 0000 10000 模16, 自然去掉 可见 可用 代替 记作 (mod 24) 同理 ≡ + 101 (mod 23) 0.1001 (mod 2)

12 6.1 ? ? (2) 正数的补数即为其本身 + 0101(mod24) ≡ 1011 (mod24) + 10000 + 0101
两个互为补数的数 (mod24) 分别加上模 + 0101 结果仍互为补数 丢掉 ∴ ≡ (mod24) 可见 + 0101 + 0101 ? 1011 ? 0 , 0101 + 0101 1 , 0101 1011 24+1 – 1011 = 100000 (mod24+1) 1011 用 逗号 将符号位 和数值部分隔开 1,0101

13 6.1 (3) 补码定义 整数 [x]补 = 0,x 2n >x ≥ 0 2n+1 + x 0 >x ≥ 2n(mod 2n+1)
x = +1010 x = [x]补 = 0,1010 [x]补 = ( ) = 用 逗号 将符号位 和数值部分隔开 1,

14 6.1 x 1>x ≥ 0 [x]补 = 2 + x 0>x ≥ 1(mod 2) = 2 - | x | 小数 x 为真值 如
= 用 小数点 将符号位 和数值部分隔开

15 6.1 (4) 求补码的快捷方式 设 x = 1010 时 则[x]补 = 24+1 1010 = 11111 + 1 1010
= = = 11111 1010 + 1 1010 = 1,0110 数值位取反 = 1,0110 又[x]原 = 1,1010 当真值为 负 时,补码 可用 原码除符号位外 每位取反,末位加 1 求得 由原码求补码的另外一种快捷方式:当原码为负数时,其补码是:自右向左,右边的第一个1及其右侧的0保持不变,其余数值位取反,符号位不动。

16 6.1 (5) 举例 例 6.5 已知 [x]补 = 0.0001,求 x 解: 由定义得 x = + 0.0001
解:由定义得 x = [x]补 – 2 = – = – ( – ) =

17 6.1 例 6.7 已知 [x]补 = 1,1110,求 x 解: 由定义得 x = [x]补 – 24+1
= 1,1110 – =  [x]原 = 1,0010 当真值为 负 时,原码 可用 补码除符号位外 每位取反,末位加 1 求得

18 6.1 练习 求下列真值的补码 [x]补 [x]原 真值 x = +70 x = 0.1110 x = 0.0000 x = 70
= 0, 0, = 1, 1, 0.1110 0.1110 1.0010 1.1110 [+ 0]补 = [ 0]补 0.0000 0.0000 0.0000 1.0000 1.0000 不能表示 [x]补 = x > x ≥ 0 2+ x > x ≥ 1(mod 2) 由小数补码定义 [ 1]补 = 2 + x = =

19 4. 反码表示法 6.1 (1) 定义 根据补码定义: [x]补 = 2n+1 + x 于是可知: [x]反 = [x]补 – 1 整数 [x]反 = 0,x n > x ≥ 0 ( 2n+1 – 1) + x ≥ x > -2n(mod 2n ) x 为真值 n 为整数的位数 x = +1101 x = [x]反 = 0,1101 [x]反 = ( ) = 用 逗号 将符号位 和数值部分隔开 = 1,0010

20 6.1 小数 x = + 0.1101 x = 0.1010 [x]反 = 0.1101 [x]反 = (2 2-4) 0.1010
( 2 – 2-n) + x ≥ x > 1(mod n) x 为真值 n 为小数的位数 x = x = [x]反 = [x]反 = (2 2-4) = 用 小数点 将符号位 和数值部分隔开 =

21 6.1 (2) 举例 例6.8 已知 [x]反 = 0,1110 求 x 解: 由定义得 x = + 1110
= 1, = 例 求 0 的反码 解: 设 x = [ ]反= x = [ ]反= 同理,对于整数 [+0]反= 0,0000 [ 0]反= 1,1111 ∴ [+ 0]反 ≠ [ 0]反

22 6.1 三种机器数的小结 最高位为符号位,书写上用“,”(整数) 或“.”(小数)将数值部分和符号位隔开 对于正数,原码 = 补码 = 反码
对于负数 ,符号位为 1,其 数值部分 原码除符号位外每位取反末位加 补码 原码除符号位外每位取反 反码

23 6.1 例6.11 设机器数字长为 8 位(其中1位为符号位) 对于整数,当其分别代表无符号数、原码、补码和
反码时,对应的真值范围各为多少? 二进制代码 无符号数 对应的真值 原码对应 的真值 补码对应 反码对应 1 2 127 +0 +1 +2 +127 +0 +1 +2 +127 +0 +0 +1 +2 +127 128 129 -0 -128 -127 -1 -127 -126 253 254 255 -125 -126 -127 -2 -1 -0 -3 -2 -1

24 6.1 5. 移码表示法 补码表示很难直接判断其真值大小 如 十进制 二进制 补码 x = +21 x = –21 x = +31
+10101 0,10101 – 10101 1,01011 +11111 0,11111 – 11111 1,00001 如果 x + 25 = 正确 = = 正确 =

25 6.1 (1) 移码定义 [x]移 = 2n + x(2n>x ≥ 2n) x 为真值,n 为 整数的位数 移码在数轴上的表示 如
真值 x = [x]移 = = 1,10100 用 逗号 将符号位 和数值部分隔开 x = –10100 [x]移 = 25 – 10100 = 0,01100

26 6.1 (2) 移码和补码的比较 设 x = +1100100 [x]移 = 27 + 1100100 = 1,1100100 1
设 x = – [x]移 = 27 – = 0, [x]补 = 1, 1 补码与移码的数值部分相同,符号位相反

27 6.1 (3) 真值、补码和移码的对照表 [x]补 [x]移 真值 x ( n = 5 ) - 1 0 0 0 0 0
十进制整数 ± 1 2 31 32 33 34 62 63 ±

28 6.1 (4) 移码的特点 当 x = 0 时 [+0]移 = 25 + 0 = 1,00000 [ 0]移 = 25 0
[ 0]移 = = 1,00000 ∴ [+0]移 = [ 0]移 当 n = 5 时 最小的真值为 25 = [ ]移 = = 可见,最小真值的移码为全 0 用移码表示浮点数的阶码 能方便地判断浮点数的阶码大小

29 各种码制、真值之间的转换关系图: 反码 补码 原码 真值 移码

30 需要记住的一些法则: (1)对于正数,其原码、反码、补码相同 (2)负数的原码反码:符号位不变,数值位 取反
(3)负数的原码补码:数值位自右向左,最 右边的第1个“1”和其右侧的“0”不动,其左 侧的数值位全部取反,符号位保持不变 (4)负数的补码反码:符号位不变,数值位 减 1

31 (5)负数的补码原码:符号位不变,数值位
自右向左,最右侧的 1 和其右侧的 0 不变, 其左侧的数值位取反 (6)负数的补码移码:符号位取反,数值位 不动 (7)原码、反码的“0”有正零和负零之分,补 码、移码的“0”都只有一种表示法 (8)补码的负数表示范围比原码和反码多一个 数, 例如1个8位的机器数(含一位符号位) (9)不论正数或负数的[x]补[-x]补:符号位连 同数值位一起取反,末位加 1

32 6.2 数的定点表示和浮点表示 计算机常用的数据表示格式有两种: 定点表示:小数点位置固定 浮点表示:小数点位置不固定
6.2 数的定点表示和浮点表示 计算机常用的数据表示格式有两种: 定点表示:小数点位置固定 浮点表示:小数点位置不固定 定点表示法——所有数的小数点位置固定不变 纯小数 纯整数

33 小数点固定于符号位之后,不需专门存放位置
1、定点纯小数 x0 x1 x2 x3 … xn-1 xn 数值部分 符号 小数点固定于符号位之后,不需专门存放位置 数的表示范围是 0 ≤ |x| ≤ 1-2-n

34 定点纯小数的表示范围: x = 0.00...00 x = 1.00...00 x = 0 正0和负0都是0 x = 0.11...11
x = 1-2-n   最大正数 x = x = 2-n  最接近0的正数 x =  x = -2-n 最接近0的负数 x =  x = -(1-2-n) 最小负数

35 小数点固定于最后一位之后,不需专门存放位置
2、定点纯整数 x0 x1 x2 x3 … xn-1 xn 符号 数值部分 小数点固定于最后一位之后,不需专门存放位置 数的表示范围是 0 ≤ |x| ≤ 2n -1

36 定点纯整数的表示范围: x = 000...00 x = 100...00 x = 0 正0和负0都是0 x = 011...11
x = 2n -1    最大正数 x = x = 1  最接近0的正数 x =  x = -1 最接近0的负数 x =  x = -(2n -1) 最小负数

37 3、定点表示法的特点 定点数表示数的范围受字长限制,表示数的范围有限; 定点表示的精度有限 机器中,常用定点纯整数表示;
如果用定点表示,如何表示实数(包括小数和整数)呢? 引入浮点

38 6.2 二、浮点表示 N = S×r j 计算机中 r 取 2、4、8、16 等 N = 11.0101 当 r = 2
浮点数的一般形式 S 尾数 j 阶码 r 基数(基值) 计算机中 r 取 2、4、8、16 等 N = 二进制表示 当 r = 2 = ×210 规格化数 = ×21 = ×2-10 = ×2100 计算机中 S 小数、可正可负 j 整数、可正可负

39 6.2 1. 浮点数的表示形式 … jf j1 j2 jm Sf S1 S2 Sn Sf 代表浮点数的符号 n 其位数反映浮点数的精度
阶符 数符 阶码的 数值部分 尾数的数值部分 小数点位置 Sf 代表浮点数的符号 n 其位数反映浮点数的精度 m 其位数反映浮点数的表示范围 jf 和 m 共同表示小数点的实际位置

40 2. 浮点数的表示范围 最大正数 2(2 - 1) ×(1 – 2-n) 最小正数 2-(2 - 1) × 2-n
m m 最小正数 (2 - 1) × 2-n m 最大负数 –2-(2 - 1) × 2-n m 最小负数 – 2(2 - 1) ×(1 – 2-n)

41 6.2 2. 浮点数的表示范围 –215 ×( 1 – 2-10) –2-15 ×2-10 上溢 阶码 > 最大阶码
上溢 阶码 > 最大阶码 下溢 阶码 < 最小阶码 按 机器零 处理 负数区 正数区 下溢 上溢 最小负数 最大负数 最小正数 最大正数 –2( 2m–1)×( 1 – 2–n) 2( 2m–1)×( 1 – 2–n) –215 ×( 1 – 2-10) 215 ×( 1 – 2-10) 2–( 2m–1)×2–n 2-15 ×2-10 设 m = 4 n =10 –2–( 2m–1)×2–n –2-15 ×2-10

42 【例1】设机器数字长为 24 位,欲表示±3万的十进制数,试问在保证数的最大精度的前提下,除阶符、数符各 取1 位外,阶码、尾数各取几位?
【分析】浮点数的阶码决定数的表示范围,尾数决定 数的精度,本题应首先考虑数的范围——±3万 解: 215 = 32768 214 = 16384 216 = 65536 15 位二进制数可反映 ±3 万之间的十进制数 215 × 0.×××     ××× 15位 m = 4,5,6, 满足 最大精度 可取 阶码 4 位,尾数 18 位

43 6.2 3. 浮点数的规格化形式 4. 浮点数的规格化 尾数最高位为 1 r = 2 基数不同,浮点数的 规格化形式不同 r = 4
尾数最高 2 位不全为 0 r = 8 尾数最高 3 位不全为 0 4. 浮点数的规格化 r = 2 左规 尾数左移 1 位,阶码减 1 右规 尾数右移 1 位,阶码加 1 r = 4 左规 尾数左移 2 位,阶码减 1 右规 尾数右移 2 位,阶码加 1 r = 8 左规 尾数左移 3 位,阶码减 1 右规 尾数右移 3 位,阶码加 1 基数 r 越大,可表示的浮点数的范围越大 基数 r 越大,浮点数的精度降低

44 6.2 【例2】 设 m = 4,n = 10,r = 2 尾数没有规格化的浮点数表示范围 最大正数
× 10 个 1 = 215×( 1–2–10 ) 最小正数 × 9 个 0 = 2–15×2–10 = 2–25 最大负数 ×(– ) 9 个 0 = –2–15×2–10 = –2–25 最小负数 ×(– ) 10 个 1 = –215×( 1–2– 10 )

45 尾数规格化的浮点数表示范围 即小数点后第一位是 1 最大正数 2+1111 × 0.1111111111 = 215×( 1–2–10 )
10 个 1 = 215×( 1–2–10 ) 最小正数 × 9 个 0 = 2–15×2–1 = 2–16 最大负数 ×(– ) 9 个 0 = –2–15×2–1 = –2–16 最小负数 ×(– ) 10 个 1 = –215×( 1–2– 10 )

46 【例3】 将 + 写成二进制定点数、浮点数及在定点机和浮点机中的机器数形式。其中尾数取11位(含1位数符),阶码取 5 位(含1位阶符)。
13 128 解: 设 x = + 13 128 = + 27 = +( ) 二进制形式 x = 定点表示 x = 浮点规格化形式 x = ×2-11 定点机中 [x]原 = [x]补 = [x]反 = 浮点机中 [x]原 = 1, 0011; [x]补 = 1, 1101; [x]反 = 1, 1100;

47 【例4】将 –54 表示成二进制定点数和浮点数,并写出它在定点机和浮点机中的三种机器数及阶码为移码、尾数为补码的形式(其他要求同上例)。
解: 设 x = –54 = -( ) 二进制形式 x = – 定点表示 x = – 0000 浮点规格化形式 x = – ( ) × 2110 定点机中 浮点机中 [x]原 = 1, [x]原 = 0, 0110; [x]补 = 1, [x]补 = 0, 0110; [x]反 = 1, [x]反 = 0, 0110; [x]阶移、尾补 = 1, 0110;

48 解: 【例5】写出对应下图所示的浮点数的补码形式。 设 n = 10,m = 4, 阶符、数符各取 1位。
负数区 正数区 下溢 上溢 –2( 2m–1)×( 1 – 2–n) 2( 2m–1)×(1 – 2–n) 2–( 2m–1)×2–n 最小负数 最大正数 最小正数 –2–( 2m–1)×2–n 最大负数 解: 真值 补码 最大正数 215×(1 – 2–10) 0,1111; 最小正数 2–15× 2–10 1,0001; 最大负数 –2–15× 2–10 1,0001; 最小负数 –215×(1 – 2–10) 0,1111;

49 6.2 机器零 当浮点数 尾数为 0 时,不论其阶码为何值 按机器零处理 当浮点数 阶码等于或小于它所表示的最小
数 时,不论尾数为何值,按机器零处理 如 m = n = 10 当阶码和尾数都用补码表示时,机器零为 ×, × × × ×;  … 1, ; ×.×× ×  … (阶码 = 16) 当阶码用移码,尾数用补码表示时,机器零为 0, ;  … 有利于机器中“ 判 0 ” 电路的实现

50 6.2 四、IEEE 754 标准 S 阶码(含阶符) 尾 数 尾数为规格化表示 非 “0” 的有效位最高位为 “1”(隐含)
数符 小数点位置 尾数为规格化表示 非 “0” 的有效位最高位为 “1”(隐含) 符号位 S 阶码 尾数 总位数 短实数 长实数 临时实数

51 6.3 定 点 运 算 一、移位运算 1. 移位的意义 . 15 m = 1500 cm 小数点右移 2 位 机器用语
6.3 定 点 运 算 一、移位运算 1. 移位的意义 15 m = cm . 小数点右移 2 位 机器用语 15 相对于小数点 左移 2 位 ( 小数点不动 ) 左移 绝对值扩大 右移 绝对值缩小 在计算机中,移位与加减配合,能够实现乘除运算

52 6.3 2. 算术移位规则 符号位不变 码 制 添补代码 正数 原码、补码、反码 负数 原 码 补 码 左移 添 0 右移 添 1 反 码
码 制 添补代码 正数 原码、补码、反码 负数 原 码 补 码 左移 添 0 右移 添 1 反 码 1

53 6.3 例6.16 设机器数字长为 8 位(含1位符号位),写出 A = +26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。 解: A = +26 = 则 [A]原 = [A]补 = [A]反 = 0, [A]原=[A]补=[A]反 对应的真值 机 器 数 移位操作 移位前 0, +26 左移一位 0, + 52 左移两位 0, +104 右移一位 0, +13 右移两位 0, + 6

54 6.3 例6.17 设机器数字长为 8 位(含1位符号位),写出 A = –26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。 解: A = – 26 = – 11010 原码 对应的真值 机 器 数 移位操作 移位前 1, – 26 左移一位 1, – 52 左移两位 1, – 104 右移一位 1, – 13 右移两位 1, – 6

55 6.3 补码 反码 对应的真值 机 器 数 移位操作 移位前 1,1100110 – 26 左移一位 1,1001100 – 52 左移两位
机 器 数 移位操作 移位前 1, – 26 左移一位 1, – 52 左移两位 1, – 104 右移一位 1, – 13 右移两位 1, – 7 反码 对应的真值 机 器 数 移位操作 移位前 1, – 26 左移一位 1, – 52 左移两位 1, – 104 右移一位 1, – 13 右移两位 1, – 6

56 6.3 3. 算术移位的硬件实现 1 (a)真值为正 (b)负数的原码 (c)负数的补码 (d)负数的反码 丢 1 出错 出错 正确 正确
1 (a)真值为正 (b)负数的原码 (c)负数的补码 (d)负数的反码 丢 1 出错 出错 正确 正确 丢 1 影响精度 影响精度 影响精度 正确

57 6.3 4. 算术移位和逻辑移位的区别 算术移位 有符号数的移位 逻辑移位 无符号数的移位 逻辑左移 低位添 0,高位移丢 逻辑右移
逻辑右移 高位添 0,低位移丢 例如 逻辑左移 逻辑右移 算术左移 算术右移 (补码) 高位 1 移丢 Cy

58 二、加减法运算 1. 补码加减运算公式 (1) 加法 整数 [A]补 + [B]补 = [A+B]补(mod 2n+1) 小数
证明 整数 [A]补 + [B]补 = [A+B]补(mod 2n+1) 小数 = [A+B]补(mod 2) 根据补码定义,分 4 种情况证明该式: 情况1:当 A > 0,B > 0 时,则 (A + B) > 0 由补码定义 [A]补 = A,[B]补 = B 则 [A]补 + [B]补= A + B 由于(A + B) > 0,则 [A + B]补 = A + B 因此, [A]补 + [B]补= [A + B]补

59 续上 情况2:当 A < 0,B < 0 时,(A + B) < 0 由补码定义 [A]补 = M + A (mod M)
[B]补 = M + B (mod M) 因此, [A]补+ [B]补 = M + (M +A + B) = M + [A + B]补 = [A + B]补 (mod M) 情况3:当 A > 0,B < 0 时 由补码定义 [A]补 = A [B]补 = M + B (mod M) 有两种可能,即(A+B) ≥ 0 或 (A+B) ≤0

60 续上 ① 当(A+B) ≥ 0时,M被丢掉,因此: [A]补+ [B]补 = A+M+B = [A+B]补 ② 当(A+B) ≤0时,由补码定义 [A]补+ [B]补 = A+M+B = [A+B]补 (mod M) 情况4:当 A < 0,B > 0 时,与情况3类似,只需 将A、B位置对调即可证明

61 6.3 二、加减法运算 (2) 减法 从补码减法公式可以看出, 只要求出[-B]补, 就可以变减法为加法。
A–B = A+(–B) 整数 [A – B]补 = [A+(–B)]补 = [A]补 + [ – B]补 (mod 2n+1) 小数 (mod 2) 从补码减法公式可以看出, 只要求出[-B]补, 就可以变减法为加法。 由[B]补求[-B]补的方法是:将[B]补连同符号 位一起求反,末尾加“1”。

62 6.1 例6.2 已知 [y]补 求[ y]补 解: 由[y]补求[-y]补的方法: [y]补连同符号位在内,每位取反,末位
设 [y]补 = y0. y1 y yn <Ⅰ> [y]补 = 0. y1 y yn y = 0. y1 y yn y = y1 y2 yn [ y]补 = 1.y1 y yn + 2-n <Ⅱ> [ y]补 = 1. y1 y yn [ y]原 = 1. y1 y yn + 2-n 由[y]补求[-y]补的方法: [y]补连同符号位在内,每位取反,末位 加1,即得[-y]补 y = (0. y1 y yn + 2-n) y = 0. y1 y yn + 2-n [ y]补 = 0. y1 y yn + 2-n

63 6.3 2. 举例 例 6.18 设 A = 0.1011,B = – 0.0101 求 [A + B]补 解: [A]补
验证 解: [A]补 = 0.1011 + [B]补 = 0.0110 [A]补 + [B]补 = = [A + B]补 ∴ A + B = 例 6.19 设 A = –9,B = –5 求 [A+B]补 验证 解: [A]补 = 1 , – 1001 + [B]补 = 1 , – 0101 + [A]补 + [B]补 = 1 1 , = [A + B]补 – 1110 ∴ A + B = – 1110

64 6.3 例 6.20 设机器数字长为 8 位(含 1 位符号位) 且 A = 15, B = 24,用补码求 A – B 解: A = 15
= B = 24 = [A]补 = 0, [B]补 = 0, [– B]补 = 1, + [A]补 + [– B]补 = 1, = [A – B]补 ∴ A – B = – 1001 = –9 练习 1 设 x = y = ,用补码求 x+y 9 16 11 x + y = – = 12 16 练习 2 设机器数字长为 8 位(含 1 位符号位) 且 A = – 97,B = +41,用补码求 A – B A – B = = + 118

65 6.3 3. 溢出判断 (1) 一位符号位判溢出 参加操作的 两个数(减法时即为被减数和“求补” 以后的减数)符号相同,其结果的符号与原操作
数的符号不同,即为溢出 硬件实现 最高有效位的进位 符号位的进位 = 1 溢出 = 1 = 1 有 溢出 = 0 = 0 无 溢出

66 6.3 (2) 两位符号位判溢出 [x]补' = x 1 >x ≥ 0 4 + x 0 >x ≥ –1(mod 4)
[x]补' + [y]补' = [ x + y ]补' (mod 4) [x –y]补' = [x]补' + [– y]补' (mod 4) 00. ××××× 11. ××××× 00, ××××× 11, ××××× 结果的双符号位 相同 未溢出 结果的双符号位 不同 溢出 10, ××××× 01, ××××× 10. ××××× 01. ××××× 最高符号位 代表其 真正的符号

67 6.3 4. 补码加减法的硬件配置 加法器(n+1) V 0 A n GA GS 溢出 判断 求补控制 逻 辑 0 X n
逻 辑 X n A、X 均 n+1 位 用减法标记 GS 控制求补逻辑

68 6.3 三、乘法运算 1. 分析笔算乘法 A = – 0.1101 B = 0.1011 A×B = – 0.10001111
乘积的符号心算求得 符号位单独处理 × 乘数的某一位决定是否加被乘数 4个位积一起相加 乘积的位数扩大一倍

69 6.3 2. 笔算乘法改进 A • B = A • 0.1011 = 0.1A + 0.00A + 0.001A +0.0001A
右移一位 = 2-1{A +2-1[ 0 • A+2-1(A + 2-1(A+0))]} 第一步 被乘数A + 0 第二步 右移 一 位,得新的部分积 第三步 部分积 + 被乘数 第八步 右移 一 位,得结果

70 6.3 3. 改进后的笔算乘法过程(竖式) 部 分 积 乘 数 说 明 0 . 0 0 0 0 1 0 1 1 = 0 . 1 1 0 1
部 分 积 乘 数 说 明 = 初态,部分积 = 0 乘数为 1,加被乘数 1,形成新的部分积 = 乘数为 1,加被乘数 1 1,形成新的部分积 = 乘数为 0,加 0 1 1 1,形成新的部分积 = 乘数为 1,加 被乘数 1 1 1 1,得结果

71 6.3 小结 乘法 运算可用 加和移位实现 n = 4,加 4 次,移 4 次 由乘数的末位决定被乘数是否与原部分积相加,
然后 位形成新的部分积,同时 乘数  位  (末位移丢),空出高位存放部分积的低位。 被乘数只与部分积的高位相加 硬件 3 个寄存器,具有移位功能 1 个全加器

72 6.3 4. 原码乘法 (1) 原码一位乘运算规则 以小数为例 设[x]原 = x0. x1x2 xn …
[y]原 = y0. y1y yn [x • y]原 = (x0 y0).(0. x1x xn)(0.y1y yn) = (x0 y0). x*y* 式中 x*= 0. x1x xn 为 x 的绝对值 y*= 0. y1y yn 为 y 的绝对值 乘积的符号位单独处理 x0 y0 数值部分为绝对值相乘 x* • y*

73 6.3 (2) 原码一位乘递推公式 x*• y* = x*(0.y1y2 yn) … = x*(y12-1+y22-2+ + yn2-n)
= 2-1(y1x*+2-1(y2x* (ynx* + 0) )) z0 z1 zn z0 = 0 z1 = 2-1(ynx*+z0) z2 = 2-1(yn-1x*+z1) zn = 2-1(y1x*+zn-1)

74 6.3 例6.21 已知 x = – 0.1110 y = 0.1101 求[x • y]原 解: 数值部分的运算 0 . 0 0 0 0
部 分 积 乘 数 说 明 部分积 初态 z0 = 0 = + + x* 逻辑右移 1,得 z1 = + + 0 逻辑右移 1,得 z2 = + + x* 1 0 逻辑右移 1,得 z3 = + + x* 1 1 0 逻辑右移 1,得 z4

75 6.3 例6.21 结果 ① 乘积的符号位 x0 y0 = 1 0 = 1 ② 数值部分按绝对值相乘
例6.21 结果 ① 乘积的符号位 x0 y0 = = 1 ② 数值部分按绝对值相乘 x*• y* = 则 [x • y]原 = 特点 绝对值运算 用移位的次数判断乘法是否结束 逻辑移位

76 6.3 (3) 原码一位乘的硬件配置 Q n 移位和加控制 0 A n 加 法 器 控 制 门 0 X n A、X、Q 均 n+1 位
加 法 器 控 制 门 X n 移位和加控制 计数器 C S GM Q n 右移 A、X、Q 均 n+1 位 移位和加受末位乘数控制

77 6.3 (4) 原码两位乘 原码乘 符号位 和 数值位 部分 分开运算 两位乘 每次用 乘数的 2 位判断 原部分积
是否加 和 如何加 被乘数 新的部分积 乘数yn-1 yn 0 0 加 “0” 0 1 加 1 倍的被乘数 1 0 加 2 倍的被乘数 1 1 加 3 倍的被乘数 4 – 1 3 100 – 01 11 3 ? 先 减 1 倍 的被乘数 再 加 4 倍 的被乘数

78 6.3 (5) 原码两位乘运算规则 共有操作 +x* +2x* –x* 2
操 作 内 容 标志位 Cj 乘数判断位 yn-1yn 1 1 1 0 0 1 0 0 z 2, y* 2, Cj 保持“0” z+x* 2, y* 2, Cj 保持“0” z+2x* 2, y* 2, Cj 保持“0” z–x* 2, y* 2, Cj 置“1” 1 1 1 1 0 0 1 0 0 z+x* 2, y* 2, Cj 置“0” z+2x* 2, y* 2, Cj 置“0” z–x* 2, y* 2, Cj 保持“1” z 2, y* 2, Cj 保持“1” 共有操作 +x* x* –x* 实际操作 +[x*]补 +[2x*]补 [–x* ]补 补码移

79 6.3 例6.22 已知 x = 0.111111 y = – 0.111001 求[x·y]原 解: Cj 数值部分的运算
部 分 积 乘 数 说 明 数值部分的运算 初态 z0 = 0 补码右移 + + x*, Cj = 0 2 + + 2x*,Cj = 0 补码右移 1 1 2 + – x*, Cj = 1 补码右移 2 1 + + x*, Cj = 0

80 6.3 例6.22 结果 ① 乘积的符号位 x0 y0 = 0 1 = 1 ② 数值部分的运算
例6.22 结果 6.3 ① 乘积的符号位 x0 y0 = = 1 ② 数值部分的运算 x*• y* = 则 [x • y]原 = 特点 绝对值的补码运算 用移位的次数判断乘法是否结束 算术移位

81 6.3 (6) 原码两位乘和原码一位乘比较 原码一位乘 原码两位乘 符号位 操作数 移位 移位次数 最多加法次数 x0 y0 x0 y0
绝对值 绝对值的补码 逻辑右移 算术右移 n 2 (n为偶数) n n 2 +1(n为偶数) n 思考 n 为奇数时,原码两位乘 移 ?次 最多加 ?次

82 6.3 5. 补码乘法 (1) 补码一位乘运算规则 以小数为例 设 被乘数 [x]补 = x0. x1x2 xn … 乘数
[y]补 = y0. y1y yn ① 被乘数任意,乘数为正 同原码乘 但 加 和 移位 按 补码规则 运算 乘积的符号自然形成 ② 被乘数任意,乘数为负 乘数[y]补,去掉符号位,操作同 ① 最后 加[–x]补,校正

83 6.3 ③ Booth 算法 (被乘数、乘数符号任意) 设[x]补 = x0.x1x2 xn [y]补 = y0.y1y2 yn …
[x · y]补 –[x]补= +[–x]补 = [x]补( 0.y yn ) – [x]补 · y0 = [x]补(y1 2-1+y yn2-n) – [x]补 · y0 2-1 = 20 – 2-1 = [x]补(–y0+y1 2-1+y yn2-n) 2-1 2-2 2-2 = 2-1 – 2-2 = [x]补[–y0+(y1 – y12-1)+(y22-1–y22-2) (yn2-(n-1)–yn2-n)] = [x]补[(y1–y0)+(y2–y1) (yn–yn-1)2-(n-1)+(0 –yn)2-n)] = [x]补[(y1–y0)+(y2–y1) (yn+1–yn)2-n] 附加位 yn+1 y yn 2-n

84 6.3 ④ Booth 算法递推公式 [z0]补= 0 [z1]补= 2-1{(yn+1–yn)[x]补+[z0]补} yn+1 = 0 …
[zn]补= 2-1{(y2–y1)[x]补+[zn-1]补} [x · y]补= [zn]补+(y1–y0)[x]补 最后一步不移位 yi yi+1 操作 yi+1–yi 如何实现 yi+1–yi ? 0 0 1 0 1 1 +[x]补 1 0 -1 +[–x]补 1 1 1 1

85 6.3 例6.23 已知 x = y = – 求[x·y]补 解: [x]补 = + +[–x]补 [y]补 = 补码右移 1 [–x]补 = + +[x]补 1 补码右移 1 + +[–x]补 1 1 补码右移 ∴ [x·y]补 = 1 + +[x]补 1 1 1 补码右移 1 + +[–x]补 最后一步不移位

86 6.3 (2) Booth 算法的硬件配置 A、X、Q 均 n + 2 位 移位和加受末两位乘数控制 0 A n+1 n + 2 位加法器
控 制 门 X n+1 Q n n+1 移位和加 控制逻辑 计数器 C GM 00,11 01 10 右移 A、X、Q 均 n + 2 位 移位和加受末两位乘数控制

87 6.3 乘法小结 整数乘法与小数乘法完全相同 可用 逗号 代替小数点 原码乘 符号位 单独处理 补码乘 符号位 自然形成
原码乘 符号位 单独处理 补码乘 符号位 自然形成 原码乘去掉符号位运算 即为无符号数乘法 不同的乘法运算需有不同的硬件支持

88 6.3 四、除法运算 1. 分析笔算除法 x = – 0.1011 y = 0.1101 求 x÷y ? ? ?
0 . 1 1 1 商符单独处理 心算上商 余数不动低位补“0” 减右移一位的除数 上商位置不固定 x÷y = – 余数 商符心算求得

89 6.3 2. 笔算除法和机器除法的比较 笔算除法 机器除法 商符单独处理 符号位异或形成 心算上商
| x | – | y | > 0 上商 1 | x | – | y | < 0 上商 0 余数 不动 低位补“0” 减右移一位 的除数 余数 左移一位 低位补“0” 减 除数 2 倍字长加法器 1 倍字长加法器 上商位置 不固定 在寄存器 最末位上商

90 6.3 3. 原码除法 以小数为例 [ x ]原 = x0. x1x2 xn … [ y ]原 = y0. y1y2 yn …
[ ]原 = (x0 y0). x y x* y* 式中 x* = 0. x1x xn 为 x 的绝对值 y* = 0. y1y yn 为 y 的绝对值 商的符号位单独处理 x0 y0 数值部分为绝对值相除 x* y* 约定 小数定点除法 x* < y* 整数定点除法 x* > y* 被除数不等于 0 除数不能为 0

91 6.3 (1) 恢复余数法 解: 例6.24 [ ]原 x = – 0.1011 y = – 0.1101 求 x y
[ ]原 x y 例6.24 解: [x]原 = [y]原 = [y*]补 = [– y*]补 = ① x0 y0 = = 0 被除数(余数) 商 说 明 + +[– y*]补 余数为负,上商 0 + 恢复余数 +[y*]补 恢复后的余数 逻辑左移 1 + +[–y*]补 余数为正,上商 1 1 逻辑左移 0 1 1 + +[– y*]补

92 6.3 被除数(余数) 商 说 明 0 1 余数为正,上商 1 1 逻辑左移 1 0 1 1 + +[– y*]补 0 1 1 余数为负,上商 0 + 恢复余数 +[y*]补 恢复后的余数 逻辑左移 1 + +[– y*]补 余数为正,上商 1 1 = x* y* 上商 5 次 [ ]原 x y = 第一次上商判溢出 余数为正 上商 1 移 4 次 余数为负 上商 0,恢复余数

93 6.3 (2) 不恢复余数法 (加减交替法) 恢复余数法运算规则 不恢复余数法运算规则 余数 Ri>0 上商 “1”,2Ri – y*
2( Ri+y*) – y* = 2Ri + y* 不恢复余数法运算规则 上商“1” Ri – y* 加减交替 上商“0” Ri + y*

94 x = – y = – 求 [ ]原 x y 6.3 例6.25 解: [x]原 = +[– y*]补 [y]原 = 逻辑左移 余数为负,上商 0 1 [x*]补 = +[y*]补 [y*]补 = 逻辑左移 余数为正,上商 1 1 0 1 1 [–y*]补 = +[– y*]补 逻辑左移 0 1 余数为正,上商 1 1 0 1 1 1 +[– y*]补 逻辑左移 0 1 1 余数为负,上商 0 1 +[y*]补 余数为正,上商 1 1

95 6.3 例6.25 结果 ① x0 y0 = 1 1 = 0 ② = 0.1101 [ ]原 ∴ = 0.1101 上商 n+1 次 特点
例6.25 结果 ① x0 y0 = = 0 x* y* = ∴ = [ ]原 x y 上商 n+1 次 特点 第一次上商判溢出 移 n 次,加 n+1 次 用移位的次数判断除法是否结束

96 6.3 (3) 原码加减交替除法硬件配置 A、X、Q 均 n +1 位 用 Qn 控制加减交替 0 A n n + 1 位加法器 控 制 门
X n Q n 计数器 C GD 移位和加控制逻辑 S V 左移 A、X、Q 均 n +1 位 用 Qn 控制加减交替

97 6.3 4. 补码除法 (1) 商值的确定 x 与 y 同号 + + ① 比较被除数和除数绝对值的大小 x*>y* x = 0.1011
① 比较被除数和除数绝对值的大小 x 与 y 同号 x*>y* x = y = [x]补 = [y]补 = [x]补 = + [–y]补 = [Ri]补与[y]补同号 [Ri]补= “够减” x = – y = – [x]补 = [y]补 = [x]补 = x*<y* + [–y]补 = [Ri]补与[y]补异号 [Ri]补= “不够减”

98 6.3 x*>y* + x*<y* + 小结 x 与 y 异号 x = 0.1011 y = – 0.0011 [x]补 = 0.1011
[Ri]补与[y]补异号 [Ri]补= “够减” x*<y* x = – y = [x]补 = [y]补 = [x]补 = + [y]补 = [Ri]补与[y]补同号 [Ri]补= “不够减” 小结 [x]补和[y]补 求 [Ri]补 [Ri]补与 [y]补 同号 异号 [x]补– [y]补 [x]补+ [y]补 同号,“够减” 异号,“够减”

99 6.3 ② 商值的确定 末位恒置“1”法 ×.×××× 1 0. ×××× 1 1.×××× 1 小 结 简 化 为
[x]补与 [y]补同号 原码 0. ×××× 1 按原码上商 “够减”上“1” “不够减”上“0” 正商 [x]补与 [y]补异号 反码 1.×××× 1 按反码上商 “够减”上“0” “不够减”上“1” 负商 小 结 [x]补与 [y]补 [Ri]补与 [y]补 商 值 够减 不够减 同 号 异 号 1 原码上商 反码上商 (同号) (异号) (异号) (同号) [Ri]补与[y]补 商值 同 号 异 号 1 简 化 为

100 6.3 (2) 商符的形成 除法过程中自然形成 [x]补和[y]补同号 [x]补–[y]补 [x]补和[y]补异号 [x]补+[y]补
比较[Ri]补和[y]补 同号(够)“1” 原码上商 异号(不够)“0” 小数除法 第一次“不够”上“0” 正商 [x]补和[y]补异号 [x]补+[y]补 比较[Ri]补和[y]补 异号(够)“0” 反码上商 同号(不够)“1” 小数除法 第一次“不够”上“1” 负商

101 6.3 (3) 新余数的形成 加减交替 1 [Ri]补和 [y]补 商 新余数 同 号 异 号 2[Ri]补 + [–y]补
2[Ri]补 + [–y]补 2[Ri]补 + [ y ]补

102 例6.26 6.3 设 x = – y = 求 并还原成真值 [ ]补 x y 解: [x]补 = [y]补 = [–y]补 = 异号做加法 1 逻辑左移 同号上“1” 1 +[–y]补 1 逻辑左移 异号上“0” 1 0 1 +[y]补 1 0 逻辑左移 异号上“0” [ ]补= x y 1 0 0 1 +[y]补 x y = – 1 0 0 1 逻辑左移 同号上“1” 1 1 末位恒置“1”

103 6.3 (4) 小结 补码除法共上商 n +1 次(末位恒置 1) 第一次为商符 第一次商可判溢出 加 n 次 移 n 次
用移位的次数判断除法是否结束 精度误差最大为 2-n

104 6.3 (5) 补码除和原码除(加减交替法)比较 原码除 补码除 商符 操作数 上商原则 上商次数 加法次数 移位次数 第一步操作 移位
x0 y0 自然形成 绝对值补码 补码 余数的正负 比较余数和除数的符号 n +1 n +1 n +1 n 逻辑左移 逻辑左移 n n [x*]补- [y*]补 同号[x]补- [y]补 异号[x]补+ [y]补

105 6.4 浮点四则运算 一、浮点加减运算 x = Sx · 2jx y = Sy · 2jy 1. 对阶 Δj = jx – jy =
(1) 求阶差 = 0 > 0 < 0 jx= jy 已对齐 x 向 y 看齐 Sx 1, jx–1 Δj = jx – jy = jx> jy y 向 x 看齐 Sy 1, jy+1 x 向 y 看齐 Sx 1, jx+1 jx< jy y 向 x 看齐 Sy 1, jy–1 (2) 对阶原则 小阶向大阶看齐

106 例如 x = × y = (–0.1010) × 211 求 x + y 6.4 解: [x]补 = 00, 01; [y]补 = 00, 11; 1. 对阶 ① 求阶差 [Δj]补 = [jx]补 – [jy]补 = 00, 01 11, 01 + 11, 10 阶差为负( – 2) ∴ Sx jx+ 2 ② 对阶 [x]补' = 00, 11; 2. 尾数求和 [Sx]补' = 对阶后的[Sx]补' + [Sy]补 = ∴ [x+y]补 = 00, 11;

107 6.4 3. 规格化 (1) 规格化数的定义 r = 2 ≤ |S| <1 (2) 规格化数的判断 S>0 规格化形式 S< 0 规格化形式
0.1×× × – 0.1×× × 真值 真值 原码 0.1×× × 原码 1.1×× × 1.0×× × 补码 0.1×× × 补码 反码 0.1×× × 反码 1.0×× × 原码 不论正数、负数,第一数位为1 补码 符号位和第 一数位不同

108 6.4 特例 … S = – = – 0.100 0 … [S]原 = 1 . 1 0 0 0 … [S]补 = 1 . 1 0 0 0
2 [S]原 = [S]补 = ∴ [– ]补 不是规格化的数 1 2 S = – 1 [S]补 = ∴ [–1]补 是规格化的数

109 6.4 (3) 左规 尾数左移一位,阶码减 1,直到数符和第一数位不同为止 上例 [x+y]补 = 00, 11; 左规后 [x+y]补 = 00, 10; ∴ x + y = (– )×210 (4) 右规 当 尾数溢出( >1)时,需 右规 即尾数出现 01. ×× ×或 10. ×× ×时 尾数右移一位,阶码加 1

110 6.4 例6.27 x = × y = × 201 求 x +y(除阶符、数符外,阶码取 3 位,尾数取 6 位) 解: [x]补 = 00, 010; [y]补 = 00, 001; ① 对阶 [Δj]补 = [jx]补 – [jy]补 = 00, 010 + 11, 111 100, 001 阶差为 +1 ∴ Sy , jy+1 ∴ [y]补' = 00, 010; ② 尾数求和 [Sx]补 = + [Sy]补' = 对阶后的[Sy]补' 尾数溢出需右规

111 6.4 ③ 右规 [x +y]补 = 00, 010; 右规后 [x +y]补 = 00, 011; ∴ x +y = × 211 4. 舍入 在 对阶 和 右规 过程中,可能出现 尾数末位丢失 引起误差,需考虑舍入 (1) 0 舍 1 入法 (2) 恒置 “1” 法

112 6.4 例 6.28 x = (– —)×2-5 y = (—) ×2-4 求 x – y(除阶符、数符外,阶码取 3 位,尾数取 6 位)
7 求 x – y(除阶符、数符外,阶码取 3 位,尾数取 6 位) 解: x = (– )×2-101 y = ( )×2-100 [x]补 = 11, 011; [y]补 = 11, 100; ① 对阶 [Δj]补 = [jx]补 – [jy]补 = 11, 011 + 00, 100 11, 111 阶差为 –1 ∴ Sx , jx+ 1 ∴ [x]补' = 11, 100;

113 6.4 ② 尾数求和 ③ 右规 [Sx]补´ = 11. 101100 [–Sy]补 = 11. 001000 + 110. 110100
[x – y]补 = 11, 100; 右规后 [x – y]补 = 11, 101; ∴ x – y = (– )×2-11 = (– —)×2-3 19 32

114 6.4 5. 溢出判断 设机器数为补码,尾数为 规格化形式,并假 设阶符取 2 位,阶码的数值部分取 7 位,数符取
2 位,尾数取 n 位,则该 补码 在数轴上的表示为 阶码 10, ××···× 按机器零处理 上溢 下溢 对应 负浮点数 正浮点数 阶码 01, ××···× 阶码 01, ××···× 最小负数 最大负数 最小正数 最大正数 00, ; 00, ; 2127×(–1) 2127×(1–2-n) 11, ; 2-128×2-1 11, ; – 2-128×( n)

115 6.4 二、浮点乘除运算 x = Sx · 2jx y = Sy · 2jy 1. 乘法 x · y = (Sx · Sy)×2jx+jy
2. 除法 x y = Sx Sy × 2jx – jy 3. 步骤 (1) 阶码采用 补码定点加(乘法)减(除法)运算 (2) 尾数乘除同 定点 运算 (3) 规格化 4. 浮点运算部件 阶码运算部件,尾数运算部件

116 6.5 算术逻辑单元 四位 ALU 74181 一、ALU 电路 组合逻辑电路 Ki 不同取值 Fi 不同 … M = 0 算术运算
Ai Bi Fi Ki 组合逻辑电路 Ki 不同取值 Fi 不同 四位 ALU M = 算术运算 M = 逻辑运算 S3 ~ S 不同取值,可做不同运算

117 6.5 二、快速进位链 1. 并行加法器 di = Ai Bi 本地进位 ti = Ai + Bi 传送条件
FAn FAn-1 FA1 FA0 FAn-2 Cn Sn Cn-1 Sn-1 Cn-2 Sn-2  … C1 S1 C0 S0 C-1 A0 B0 A1 B1 An-2 Bn-2 An-1 Bn-1 An Bn Si = Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1 Ci = Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1 = Ai Bi + (Ai+Bi)Ci-1 di = Ai Bi 本地进位 ti = Ai + Bi 传送条件 则 Ci = di + tiCi-1

118 6.5 2. 串行进位链 进位链 传送进位的电路 串行进位链 进位串行传送 以 4 位全加器为例,每一位的进位表达式为
C0 = d0 + t0C-1 = d0 • t0C-1 C1 = d1 + t1C0 C2 = d2 + t2C1 设与非门的级延迟时间为ty C3 = d3 + t3C2 & C3 t3 t2 t1 t0 C2 C1 C0 C-1 d3 d2 d1 d0 4 位 全加器产生进位的全部时间为 8ty n 位全加器产生进位的全部时间为 2nty

119 6.5 3. 并行进位链 (先行进位,跳跃进位) n 位加法器的进位同时产生 以 4 位加法器为例 C0 = d0 + t0C-1
当 di ti 形成后,只需 2.5ty 产生全部进位 C1 = d1 + t1C0 = d1 + t1d0 + t1t0C-1 C2 = d2 + t2C1 = d2 + t2d1 + t2t1d0 + t2t1t0C-1 C3 = d3 + t3C2 = d3 + t3d2 + t3t2d1 + t3t2t1d0 + t3t2t1t0C-1 ≥1 & C-1 d3 t3 d2 t2 d1 t1 d0 t0 1 C0 C1 C2 C3 设与或非门的延迟时间为 1.5ty

120 6.5 (1) 单重分组跳跃进位链 n 位全加器分若干小组,小组中的进位同时产生, 小组与小组之间采用串行进位 以 n = 16 为例
C15 C14 C13 C12 C11 C10 C9 C8 C7 C6 C5 C4 C3 C2 C1 C0 C-1 第 1 组 第 2 组 第 3 组 第 4 组 d15 t15 d14 d13 d12 t14 t13 t12 d11 d10 d9 d8 t11 t10 t9 t8 d7 d6 d5 d4 t7 t6 t5 t4 d3 d2 d1 d0 t3 t2 t1 t0 当 di ti 形成后 经 2.5 ty 产生 C3 ~ C0 5 ty 产生 C7 ~ C4 7.5 ty 产生 C11 ~ C8 1 0 ty 产生 C15 ~ C12

121 6.5 (2) 双重分组跳跃进位链 n 位全加器分若干大组,大组中又包含若干小组。每个大组中小组的最高位进位同时产生。大组与大组之间采用串行进位。 以 n = 32 为例 C31 C27 C23 C19 C15 C11 C7 C3 第 一 大 组 第 二 大 组 1 3 2 4 5 6 7 8

122 6.5 (3) 双重分组跳跃进位链 大组进位分析 = + D8 D8 小组的本地进位 与外来进位无关
以第 8 小组为例 C3 = d3 + t3C2 = d3 + t3d2 + t3t2d1 + t3t2t1d0 + t3t2t1t0C-1 C-1 = + D8 T8 D8 小组的本地进位 与外来进位无关 T8 小组的传送条件 与外来进位无关 传递外来进位 同理 第 7 小组 C7 = D7 + T7C3 第 6 小组 C11= D6 + T6C7 第 5 小组 C15 = D5 + T5C11 进一步展开得 C3 = D8+T8C-1 C7 = D7+T7C3 = D7+T7D8+T7T8C-1 C11 = D6+T6C7 = D6+T6D7+T6T7D8+T6T7T8C-1 C15 = D5+T5C11 = D5+T5D6+T5T6D7+T5T6T7D8+T5T6T7T8C-1

123 6.5 (4) 双重分组跳跃进位链的 大组 进位线路 以第 2 大组为例 T5 T6 & 1 C-1 D5 D6 D7 T7 D8 T8
≥1 & 1 C-1 D5 D6 D7 T7 D8 T8 C15 C11 C7 C3 第 5 小组 第 6 小组 第 7 小组 第 8 小组

124 6.5 (5) 双重分组跳跃进位链的 小组 进位线路 以第 8 小组为例 只产生 低 3 位 的进位和 本小组的 D8 T8 C2 C1
≥1 & C-1 d3 t3 d2 t2 d1 t1 d0 t0

125 6.5 (6) n =16 双重分组跳跃进位链 第 二 重 进 位 链 C15 C11 C7 C3 D5 T5 D6 T6 D7 T7 D8
第 二 重 进 位 链 D5 T5 D6 T6 D7 T7 D8 T8 C14~12 C10~8 C6~4 C2~0 第 5 小组 第 6 小组 第 7 小组 第 8 小组 C-1 d15~12 t15~12 d11~8 t11~8 d9~4 t9~4 d3~0 t3~0 当 di ti 和C-1形成后 经 2.5 ty 产生 C2、C1、C0、D5 ~ D8、T5 ~ T8 经 5 ty 产生 C15、 C11、 C7、 C3 经 7.5 ty 产生 C14~C12、 C10~C8 、 C6~C4 串行进位链 经 3 2 ty 产生 全部进位 单重分组跳跃进位链 经 1 0 ty 产生 全部进位

126 6.5 (7) n =32 双重分组跳跃进位链 第 一 大 组 第 二 大 组 di ti 1 2 3 4 5 6 7 8 … C31
第 一 大 组 第 二 大 组 D1 T1 D2 T2 D3 T3 D4 T4 D5 T5 D6 T6 D7 T7 D8 T8 C31 C27 C23 C19 C15 C11 C7 C3 C30~28 C26~24 C22~20 C18~16 C14~12 C10~8 C6~4 C2~0 C-1 当 di ti 形成后 经 2.5 ty 产生 C2、C1、C0、D1 ~ D8、T1 ~ T8 5 ty 产生 C15、 C11、 C7、 C3 7.5 ty 产生 C18 ~C16、 C14~C12、 C10~C8 、 C6~C4 C31、 C27、 C23、 C19 1 0 ty 产生 C30~C28、 C26 ~C24、 C22 ~C20


Download ppt "第6章 计算机的运算方法 6.1 无符号数和有符号数 6.2 数的定点表示和浮点表示 6.3 定点运算 6.4 浮点四则运算"

Similar presentations


Ads by Google