3.5 单项选择题
第 3 版 · OCR 辅助 · 原书检索 · 文字用于定位,公式与图表请回原页核验 · 本次导入快照
## 3.5 单项选择题
1. 8 位无符号整数 1001 0101 右移一位后的值为( )。
A. 0100 1010
B. 0100 1011
C. 1000 1010
D. 1100 101
2. 8 位补码定点整数 1001 0101 右移一位后的值为( )。
A. 0100 1010
B. 0100 1011
C. 1000 1010
D. 1100 1010
3. 8 位补码定点整数 1001 0101 左移一位后的值为( )。
A. 1010 1010
B. 0010 1010
C. 0010 1011
D. 溢出
4. 8 位补码定点整数 1001 0101 扩展 8 位后的值用十六进制表示为( )。
A. 0095H
B. 9500H
C. FF95H
D. 95FFH
5. 原码定点小数 1.1001 0101 扩展 8 位后的值为( )。
A. 1.0000 0000 1001 0101
B. 1.1001 0101 0000 0000
C. 1.1111 1111 1001 0101
D. 1.1001 0101 1111 1111
6. 考虑以下 C 语言代码:
short si=-8196;
int i=si;
执行上述程序段后,$i$ 的机器数表示为( )。
A. 0000 9FFCH
B. 0000 DFFCH
C. FFFF 9FFCH
D. FFFF DFFCH
<!-- page: 59 -->
7. CPU 中能进行算术和逻辑运算的最基本运算部件是( )。
A. 多路选择器
B. 移位器
C. 加法器
D. ALU
8. ALU 的核心部件是( )。
A. 多路选择器
B. 移位器
C. 加法器
D. 寄存器
9. 假定 T 表示一级门延迟,一个异或门的延迟为 3T,则 8 位全先行进位加法器的关键路径延迟为( )。
A. 6T
B. 8T
C. 16T
D. 17T
10. 在补码加/减运算部件中,无论采用双符号位还是单符号位,必须有( )电路,它一般用异或门来实现。
A. 译码
B. 编码
C. 溢出判断
D. 移位
11. 某计算机字长为 8 位,其 CPU 中有一个 8 位加法器。已知无符号数 $x = 69, y = 38$,现要在该加法器中完成 $x + y$ 的运算,则该加法器的两个输入端信息和输入的低位进位信息分别为( )。
A. 0100 0101,0010 0110,0
B. 0100 0101,0010 0110,1
C. 0100 0101,1101 1010,0
D. 0100 0101,1101 1010,1
12. 某计算机字长为 8 位,其 CPU 中有一个 8 位加法器。已知无符号数 $x = 69, y = 38$,现要在该加法器中完成 $x - y$ 的运算,则该加法器的两个输入端信息和输入的低位进位信息分别为( )。
A. 0100 0101,0010 0110,0
B. 0100 0101,1101 1001,1
C. 0100 0101,1101 1010,0
D. 0100 0101,1101 1010,1
13. 某计算机字长为 8 位,其 CPU 中有一个 8 位加法器。已知带符号整数 $x = -69, y = -38$,现要在该加法器中完成 $x + y$ 的运算,则该加法器的两个输入端信息和输入的低位进位信息分别为( )。
A. 1011 1011,1101 1010,0
B. 1011 1011,1101 1010,1
C. 1011 1011,0010 0101,0
D. 1011 1011,0010 0101,1
14. 某计算机字长为 8 位,其 CPU 中有一个 8 位加法器。已知带符号整数 $x = -69, y = -38$,现要在该加法器中完成 $x - y$ 的运算,则该加法器的两个输入端信息和输入的低位进位信息分别为( )。
A. 1011 1011,1101 1010,0
B. 1011 1011,1101 1010,1
C. 1011 1011,0010 0101,1
D. 1011 1011,0010 0110,1
15. 某 8 位计算机中,假定 $x$ 和 $y$ 是两个带符号整数变量,用补码表示,$x = 63, y = -31$,则 $x + y$ 的机器数及其相应的溢出标志 OF 分别是( )。
A. 1FH,0
B. 20H,0
C. 1FH,1
D. 20H,1
16. 某 8 位计算机中,假定 $x$ 和 $y$ 是两个带符号整数变量,用补码表示,$x = 63, y = -31$,则 $x - y$ 的机器数及其相应的溢出标志 OF 分别是( )。
A. 5DH,0
B. 5EH,0
C. 5DH,1
D. 5EH,1
17. 某 8 位计算机中,假定带符号整数变量 $x$ 和 $y$ 的机器数用补码表示,$\left[x\right]_{\#} = \mathrm{F}5\mathrm{H}$,$\left[y\right]_{\#} = 7\mathrm{EH}$,则 $x + y$ 的值及其相应的溢出标志 OF 分别是( )。
A. 115,0
B. 119,0
C. 115,1
D. 119,1
<!-- page: 60 -->
18. 某 8 位计算机中,假定带符号整数变量 $x$ 和 $y$ 的机器数用补码表示,$[x]_{\mathrm{H}} = \mathrm{F}5\mathrm{H}$,$[y]_{\mathrm{H}} = 7\mathrm{EH}$,则 $x - y$ 的值及其相应的溢出标志 OF 分别是( )。
A. 115、0
B. 119、0
C. 115、1
D. 119、1
19. 某 8 位计算机中,假定 $x$ 和 $y$ 是两个带符号整数变量,用补码表示,$[x]_{\mathrm{H}} = 44\mathrm{H}$,$[y]_{\mathrm{H}} = \mathrm{DCH}$,则 $x + 2y$ 的机器数以及相应的溢出标志 OF 分别是( )。
A. $32\mathrm{H}, 0$
B. $32\mathrm{H}, 1$
C. FCH、0
D. FCH、1
20. 某 8 位计算机中,假定 $x$ 和 $y$ 是两个带符号整数变量,用补码表示,$[x]_{\mathrm{H}} = 44\mathrm{H}$,$[y]_{\mathrm{H}} = \mathrm{DCH}$,则 $x - 2y$ 的机器数以及相应的溢出标志 OF 分别是( )。
A. $68\mathrm{H}, 0$
B. $68\mathrm{H}, 1$
C. 8CH、0
D. 8CH、1
21. 某 8 位计算机中,假定 $x$ 和 $y$ 是两个带符号整数变量,用补码表示,$[x]_{\mathrm{H}} = 44\mathrm{H}$,$[y]_{\mathrm{H}} = \mathrm{DCH}$,则 $x / 2 + 2y$ 的机器数以及相应的溢出标志 OF 分别是( )。
A. CAH、0
B. CAH、1
C. DAH、0
D. DAH、1
22. 假定有两个整数用 8 位补码分别表示为 $r_1 = \mathrm{F}5\mathrm{H}, r_2 = \mathrm{EEH}$。若将运算结果存放在一个 8 位寄存器中,则下列运算中会发生溢出的是( )。
A. $r_1 + r_2$
B. $r_1 - r_2$
C. $r_1 \times r_2$
D. $r_1 / r_2$
23. 以下关于原码一位乘法算法要点的描述中,错误的是( )。
A. 符号位和数值位分开运算,符号位可由一个异或门生成
B. 通过循环执行“加法”和“移位”操作得到乘积
C. ALU 中是否进行部分积与被乘数的加法运算由乘数最低位决定
D. 移位时,将进位位、部分积和乘积部分一起进行算术右移
24. 假定一次 ALU 运算用 1 个时钟周期,移位一次用 1 个时钟周期,则最快的 32 位原码一位乘法所需的时钟周期数大约为( )。
A. 32
B. 64
C. 96
D. 100
25. 以下关于 Booth 补码一位乘法算法要点的描述中,错误的是( )。
A. 符号位和数值位一起参加运算,无须专门的符号生成部件
B. 通过循环执行“加/减”和“移位”操作得到乘积
C. 由乘数最低两位决定对部分积和被乘数进行何种运算
D. 移位时,将进位位、部分积和乘积部分一起进行算术右移
26. 以下关于乘法运算部件的叙述中,错误的是( )。
A. 补码乘法部件可用于带符号整数的乘法运算
B. 原码乘法部件可用于浮点数中尾数相乘运算
C. 快速阵列乘法器中的基本部件包含有移位器
D. 两位乘法运算比一位乘法运算速度约快一倍
27. 对于两个 $n$ 位无符号整数除法运算,以下关于不恢复余数算法要点的描述中,错误的是( )。
A. 起始时被除数在高位扩展 $n$ 位 0,以将其扩展为 $2n$ 位无符号整数
B. 为判断中间余数的正/负,需在余数寄存器的最高位前增加一位符号位
C. 至少需 $n + 1$ 次循环执行“加/减”和“左移”操作才能得到 $n$ 位商
D. 运算结果一定不会发生溢出,故无须通过得到最高位商来判断溢出
<!-- page: 61 -->
28. 对于 IEEE 754 单精度浮点加减运算,在对阶过程中,需计算两个阶码 $E_x$ 和 $E_y$ 之差的补码 $[\Delta E]_{\mathrm{H}}$。若 $\Delta E \geqslant 128$ 或 $\Delta E \leqslant -129$,则 $[\Delta E]_{\mathrm{H}}$ 发生溢出。假定 $[E_x]_{\mathrm{H}}, [-[E_y]_{\mathrm{H}}]_{\mathrm{H}}$ 和 $[\Delta E]_{\mathrm{H}}$ 的最高有效位分别记为 $E_{\mathrm{xs}}, E_{\mathrm{ys}}$ 和 $E_{\mathrm{bs}}$,则相应的溢出判断方程为()。
A. Overflow $= \overline{E}_{\mathrm{xs}}\overline{E}_{\mathrm{ys}}E_{\mathrm{bs}} + E_{\mathrm{xs}}E_{\mathrm{ys}}\overline{E}_{\mathrm{bs}}$
B. Overflow $= \overline{E}_{\mathrm{xs}}\overline{E}_{\mathrm{ys}}\overline{E}_{\mathrm{bs}} + E_{\mathrm{xs}}\overline{E}_{\mathrm{ys}}\overline{E}_{\mathrm{bs}}$
C. Overflow $= \overline{E}_{\mathrm{xs}}E_{\mathrm{ys}}E_{\mathrm{bs}} + E_{\mathrm{xs}}\overline{E}_{\mathrm{ys}}E_{\mathrm{bs}}$
D. Overflow $= \overline{E}_{\mathrm{xs}}\overline{E}_{\mathrm{ys}}\overline{E}_{\mathrm{bs}} + E_{\mathrm{xs}}E_{\mathrm{ys}}E_{\mathrm{bs}}$
29. IEEE 754 单精度浮点数加减运算的对阶过程中,需要计算两个阶码 $E_x$ 和 $E_y$ 之差的补码 $[\Delta E]_{\mathrm{H}}$。假设两个浮点数分别记为 $[x]_{\mathrm{ff}}$ 和 $[y]_{\mathrm{ff}}$,$[E_x]_{\mathrm{H}}, [E_y]_{\mathrm{H}}$ 和 $[\Delta E]_{\mathrm{H}}$ 的最高有效位分别记为 $E_{\mathrm{xs}}, E_{\mathrm{ys}}$ 和 $E_{\mathrm{bs}}$,当 $[\Delta E]_{\mathrm{H}}$ 发生溢出时,正确的处理方式是()。
A. 中止当前程序的执行,调出相应的“溢出”异常处理程序执行
B. 当 $E_{\mathrm{xs}}$ 为 1 时置最终结果为 $[x]_{\mathrm{ff}}$;当 $E_{\mathrm{xs}}$ 为 0 时置最终结果为 $[y]_{\mathrm{ff}}$
C. 当 $E_{\mathrm{ys}}$ 为 1 时置最终结果为 $[x]_{\mathrm{ff}}$;当 $E_{\mathrm{ys}}$ 为 0 时置最终结果为 $[y]_{\mathrm{ff}}$
D. 当 $E_{\mathrm{bs}}$ 为 0 时置最终结果为 $[x]_{\mathrm{ff}}$;当 $E_{\mathrm{bs}}$ 为 1 时置最终结果为 $[y]_{\mathrm{ff}}$
30. 若两个 float 型变量(用 IEEE 754 单精度浮点格式表示)$x$ 和 $y$ 的机器数分别表示为 $x = 40\mathrm{E8}0000\mathrm{H}, y = \mathrm{C204}0000\mathrm{H}$,则在计算 $x + y$ 时,第一步对阶操作的结果 $[\Delta E]_{\mathrm{H}}$ 为()。
A. 0000 0111
B. 0000 0011
C. 1111 1011
D. 1111 1101
31. 对于 IEEE 754 单精度浮点数加减运算,只要对阶时得到的两个阶码之差的绝对值 $|\Delta E|$ 大于或等于(),就无须继续进行后续处理,此时,运算结果直接取阶大的那个数。
A. 24
B. 25
C. 126
D. 128
32. IEEE 754 标准提供了以下 4 种舍入模式,其中平均误差最小的是()。
A. 就近舍入(中间值时强迫为偶数)
B. 正向舍入(即朝 $+\infty$ 方向舍入)
C. 负向舍入(即朝 $-\infty$ 方向舍入)
D. 截断舍入(即朝 0 方向舍入)
【参考答案】
1. A
2. D
3. D
4. C
5. B
6. D
7. D
8. C
9. A
10. C
11. A
12. B
13. A
14. C
15. B
16. B
17. A
18. D
19. C
20. D
21. C
22. C
23. D
24. B
25. D
26. C
27. C
28. D
29. B
30. D
31. B
32. A
【部分题目的答案解析】
第 20 题
已知 $[y]_{\mathrm{H}} = \mathrm{DCH} = 11011100\mathrm{B}$,所以 $[-y]_{\mathrm{H}} = 00100100\mathrm{B}, [x - 2y]_{\mathrm{H}} = [x]_{\mathrm{H}} + [-2y]_{\mathrm{H}} = [x]_{\mathrm{H}} + [-y]_{\mathrm{H}} < 1 = 01000100 + 00100100 < 1 = 01000100 + 01001000 = 10001100 = 8\mathrm{CH}$,从最后一步加操作来看,是两个正数相加,结果为负数,故溢出标志 OF 为 1。综上所述,答案为选项 D。
<!-- page: 62 -->
# 第21题
$$
[x/2 + 2y]_W = [x]_W >> 1 + [y]_W << 1 = 01000100 >> 1 + 11011100 << 1 = 00100010 + 10111000 = 11011010 = \text{DAH}, \text{从最后一步加操作来看,是一个正数和一个负数}
$$
相加,因此一定不会溢出。综上所述,答案为 C。
# 第23题
关于原码一位乘法算法要点的描述中,错误的是 D 选项中的说法:“移位时,将进位位、部分积和乘积部分一起进行算术右移”。因为原码一位乘法算法中,数值部分和符号分开处理,数值部分通过无符号乘的算法实现,在将进位位、部分积和乘积部分右移时,采用的是逻辑右移,即高位补 0 的办法,而不是采用算术右移方式。
# 第24题
假定一次 ALU 运算用 1 个时钟周期,移位一次用 1 个时钟周期,则最快的 32 位原码一位乘法所需的时钟周期数大约为 64。因为 32 位原码一位乘法的循环次数为 32,每次循环中,控制逻辑根据当前乘数寄存器的最低位确定是否在 ALU 中进行加法运算,这需要一个时钟周期;然后进行右移操作,这需要一个时钟周期。因此,每次循环需要两个时钟周期,一共需要大约 64 个时钟周期。
# 第25题
关于布斯补码一位乘法算法要点的描述中,错误的是 D 选项中的说法:“移位时,将进位位、部分积和乘积部分一起进行算术右移”。因为补码一位乘法的算法中,并没有专门的进位位,而符号位作为部分积的一部分进行处理,所以,选项 D 的描述中提到进位位和部分积、乘积部分一起算术右移是错误的。
# 第27题
对于两个 $n$ 位无符号整数除法运算,最大的商为 $111\cdots 11/000\cdots 01 = 111\cdots 11$,显然,运算结果没有产生溢出。因此,两个 $n$ 位无符号整数除法运算肯定不会溢出,无须通过得到最高位商(第 $n$ 位商 $q_n$)来判断溢出,也即只要有 $n$ 次循环执行“加/减”和“左移”操作,就能得到第 $n - 1 \sim 0$ 位的 $n$ 位商 $(q_{n-1} \sim q_0)$。因此,选项 C 的说法是错误的。
# 第28题
对于 IEEE 754 单精度浮点加减运算,在对阶过程中,需要计算两个阶码 $E_x$ 和 $E_y$ 之差的补码 $[\Delta E]_W$,$[\Delta E]_W = [E_x - E_y]_W = [E_x]_W + [-[E_y]_W]$。假定 $[E_x]_W$、$[- [E_y]_W]$ 和 $[\Delta E]_W$ 的最高有效位分别记为 $E_{xz}, E_{yz}$ 和 $E_{bz}$,若 $\Delta E \geqslant 128$,则 $[\Delta E]_W$ 发生正溢出,此时 $E_{bz}$ 为 1,而 $E_x$ 一定为正数,即 $E_{xz} = 1$,$E_y$ 一定为负数,即 $[E_y]_W$ 的符号位为 0,计算 $[- [E_y]_W]$ 时,对 $[E_y]_W$ 的各位取反、末位加 1,从而得到 $E_{yz} = 1$,综合起来的逻辑表达式就是 $E_{xz} E_{yz} E_{bz}$;若 $\Delta E \leqslant -129$,则 $[\Delta E]_W$ 发生负溢出,此时 $E_{bz}$ 为 0,而 $E_x$ 一定为负数,即 $E_{xz} = 0$,$E_y$ 一定为正数,即 $[E_y]_W$ 的符号位为 1,计算 $[- [E_y]_W]$ 时,对 $[E_y]_W$ 的各位取反、末位加 1,从而得到 $E_{yz} = 0$,综合起来的逻辑表达式就是 $\overline{E_{xz}} \overline{E_{yz}} \overline{E_{bz}}$,因此,Overflow = $\overline{E_{xz}} \overline{E_{yz}} \overline{E_{bz}} + \overline{E_{xz}} \overline{E_{yz}} \overline{E_{bz}}$。
# 第29题
假设浮点数 $x$ 和 $y$ 的机器数分别记为 $[x]_{\text{浮}}$ 和 $[y]_{\text{浮}}$,$[\Delta E]_W = [E_x - E_y]_W = [E_x]_W + [-[E_y]_W]$,将 $[E_x]_W$、$[E_y]_W$ 和 $[\Delta E]_W$ 的最高有效位分别记为 $E_{xz}, E_{yz}$ 和 $E_{bz}$。当 $[\Delta E]_W$
<!-- page: 63 -->
发生溢出时,若 $\Delta E \geqslant 128$,说明 $x$ 的阶比 $y$ 的阶至少大 $128$,$y$ 的尾数至少要向右移 128 位,因而 $y$ 被 $x$ “吃掉”,结果应该取 $x$,此时 $E_{xx} = 1$;若 $\Delta E \leqslant -129$,说明 $y$ 的阶比 $x$ 的阶至少大 $129$,$x$ 的尾数至少要向右移 129 位,因而 $x$ 被 $y$ “吃掉”,结果应该取 $y$,此时 $E_{xx} = 0$。因此,选项 B 是正确的。