《计算机组成与设计》习题解答 下载本文

内容发布更新时间 : 2024/5/13 7:50:11星期一 下面是文章的全部内容请认真阅读。

第1章

19. 设控制器的输入信号有时钟信号(T1, T2, T3)和指令译码器的输出信号(ADD, MOVE, JMP),输出信号为(PCin, MARin, Yin),其逻辑表达式为 PCin = T3*JMP MARin = T1 + T2*MOVE Yin = T3*(ADD + JMP) 试画出阵列逻辑电路的结构图,标出其中每个线路交叉点的连接编程情况,用圆点表示连接的交叉点,无圆点的交叉线表示不连接。 答:

T1 T2 T3 ADD MOVE JMP PCin MARin Yin

20. 可编程阵列逻辑芯片PAL20L8有多少个信号线引脚,其中有多少个引脚可以用于输出信号?有多少个引脚可用于输入信号?芯片内部有多少可编程点? 答:有20个信号线引脚,其中有8个引脚可以用于输出信号,有20个引脚可用于输入信号,芯片内部有40x8x8=2560个可编程点。

注:这是原始产品的情况。某些产商的产品为了降低成本,可能减少了可编程点的数量。

第3章

10. 写出下列二进制数的原码、反码、补码和移码。 (1) 11010100 (2) 0.1010000 (3) -10101100 (4) -0.0110000 答:(1)[11010100]原 = 011010100, [11010100]反 = 011010100,

[11010100]补 = 011010100,[11010100]移 = 111010100

(2)[0.1010000]原 = 0.1010000, [0.1010000]反 = 0.1010000,

[0.1010000]补 = 0.1010000,[0.1010000]移 没有定义

(3)[-10101100]原 = 110101100, [-10101100]反 = 101010011,

[-10101100]补 = 101010100,[-10101100]移 = 001010100 (4)[-0.0110000]原 = 1.0110000, [-0.0110000]反 =1.1001111,

[-0.0110000]补 =1.1010000,[-0.0110000]移 没有定义

15. 对以下数据作规格化浮点数的编码,假定1位符号位,基数为2,阶码5位,采用移码,尾数10位,采用补码。 (1) 101102 (2) -0.0013810

答:(1) 10110 = 0.10110×25

[5]移=10000+00101=10101 [0.10110]补=0.10110

符号位为0,所以浮点格式为: [10110]浮=0 10101 1011000000

(2) -0.00138 = -0.0000000001011010011= -0.1011010011×2-9

[-9]移=10000-01001=00111

[-0.1011010011]补=1.0100101101

符号位为1,所以浮点格式为:

[-0.00138]浮=1 00111 0100101101

注意:本题要求对浮点数进行编码,要将结果写成二进制代码的形式,而不能写成M×RE的形式。解这类题目的基本方法是先将数据表示成M×RE的形式,其中M满足规格化要求,然后分别对M和E按照题目要求进行编码,按后将编码的结果按浮点数格式表示出来。

19. 设浮点数的格式为: 符号位:b15

阶码: b14~b8,采用补码表示

尾数: b7~b0,与符号位一起采用规格化的补码表示,基数为2。问: (1) 它能表示的数值范围是什么?

(2) 它能表示的最接近于0的正数和负数分别是什么? (3) 它共能表示多少个数值? 请用十进制数2的幂次表示。

答:最小正尾数为2-1,最大正尾数为1-2-8 最小负尾数为-1,最大负尾数为-(2-1+2-8) = -2-1(1+2-7) 最小阶码为-26 = -64,最大阶码为26-1 = 63 (1) 数值范围为-263到(1-2-8)*263 (2) 最接近于0的负数为:-(1+2-7)2-65 最接近于0的正数为:2-65

(3) 共能表示2×27×1/2×28 + 1 = 27*28 = 215 +1个数值

23. 将下列十六进制的IEEE单精度数代码转换成十进制数值表示。 (1) 42E48000 (2) 3F880000 (3) 00800000 (4) C7F00000

答:题目中给出了浮点数编码的十六进制表示,首先将其转换成二进制表示,然后求数值。 (1) 42E4800016 = 0 10000101 110010010000000000000002

= (-1)0×26 * (1 + 1/2 + 1/4 + 1/32 + 1/256) = 114.25 (2) 3F88000016 = 0 01111111 000100000000000000000002

= (-1)0×20×(1 + 1/16) = 1.0625

(3) 0080000016 = 0 00000001 000000000000000000000002 = (-1)0×21-127×(1+0) = 2-126 = 1.175×10-38

(4) C7F0000016 = 1 10001111 111000000000000000000002 = (-1)1×216×(1 + 1/2 + 1/4 + 1/8) = -122880 = -1.875×216 = -15×213

30. 对于本章介绍的(12,8)海明码,假如出现了码字

{w12,w11,w10,w9,w8,w7,w6,w5,w4,w3,w2,w1}={0,1,0,0,1,1,0,1,0,1,1,0}

问该码字是否合法?如果不合法,是哪一位发生了错误?应该纠正成什么码字? 答:书上的方程式第二个等式漏了w11,将上述码字代入方程组,均符合,没有错误。

31. 取G(x) = x3 + x + 1作为(7,4)循环码生成多项式,试采用多项式除法求余数多项式的方法计算它所生成的全部码字。

答:全部码字如下所示。这里采用多项式乘法的方法计算循环码,将信息字m的多项式乘以生成多项式就得到码字v的多项式。这样得到的全部码字与采用除法求余方法得到的全部码字相同。它符合循环码的条件,但是码字与信息字的对应关系不同。

m 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 v 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 0 1 0 0 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 0 0 1

32. 对上题的结果进行验证,验证上述编码结果是循环码。

答:上述各代码向左循环移位后的情况可以用状态转换图表示如下:

0000000 00010110010110010110010110000110001110001010001011101001 1010011 1001110 0011101 0111010 1110100 1101001 1111111 从图中显而易见,每一个代码向左循环移位后形成的代码仍然是合法代码,因而构成循环码。

第4章

3. 已知x和y的二进制值,用补码运算求[x+y]补和[x-y]补,指出结果是否溢出。

(1) x = 0.10111,y = 0.11011 (2) x = 0.11101,y = 0.10011 (3) x = 0.11011,y = - 0.01010 (4) x = - 0.11111,y = 0.11011

答:(1) [x+y]补=0.10111+0.11011=1.10010(溢出) [x-y]补=0.10111+1.00101=1.11100

(2) [x+y]补=0.11101+0.10011=1.10000(溢出)

[x-y]补=0.11101+1.01101=0.01010

(3) [x+y]补=0.11011+1.10110=0.10001

[x-y]补=0.10111+0.11011=1.00101(溢出)

(4) [x+y]补=1.00001+0.11011=1.11100

[x-y]补=1.00001+1.00101=0.00110(溢出)

5. 已知x和y的二进制值,用补码一位乘法计算[x*y]补,列出计算过程。 (1) x = 0011,y = 0101 (2) x = -0011,y = 0101 (3) x = 0011,y = - 0101 (4) x = -0011,y = - 0101

答:(1) [x]补=0011,[y]补=0101,[-x]补=1101 0 1 2 3 4 初始数值 加[-x]补 右移 加[x]补 右移 加[-x]补 右移 加[x]补 右移 00000101 11010101 11101010 00011010 00001101 11011101 11101110 00011110 00001111 0 0 1 1 0 0 1 1 0 即[xy]补=00001111, xy=1111

(2) [x]补=1101,[y]补=0101,[-x]补=0011