《计算机组成原理》课后题答案_清华大学出版_秦磊华_吴非·· 下载本文

(2)两个用补码表示得数相加时,如果最高位(符号位)有进位,则进位被舍弃。 这样得运算有两个好处:

(a)使符号位能与有效值部分一起参加运算,从而简化运算规则。从而可以简化运算器得结构,提高运算速度;(减法运算可以用加法运算表示出来。)

(b)加法运算比减法运算更易于实现。使减法运算转换为加法运算,进一步简化计算机中运算器得线路设计。

3)浮点数得表示范围与精确度分别由什么决定?字长一定时浮点数得表示范围与精确度之间有与关系?

答:浮点数得表示范围由阶码得位数决定,精确度由尾数得位数决定.

当机器字长一定时,分给阶码得位数越多,尾数占用得位数就越少,则数得表示范围越大。而尾数占用得位数减少,必然会减少数得有效数位,即影响数得精度。 4)汉字输入码、机内码与字型码在汉字处理过程中各有何作用? 答:汉字输入码、机内码与字型码,分别用于汉字得输入、汉字在计算机内得处理以及汉字得显示与打印。

具体来说,计算机要对汉字信息进行处理,首先要将汉字转换成计算机可以识别得二进制形式并输入到计算机,这就是由汉字输入码完成得;汉字输入到计算机后,还需要转换成内码才能被计算机处理,显然,汉字内码也应该就是二进制形式。如果需要显示与打印汉字,还要将汉字得内码转换成字形码。

5)在机内码中如何区分两个ASCII码字符与一个汉字?

答:将一个汉字瞧成就是两个扩展ASCII码,使表示GB2312汉字得两个字节得最高位都为1,而每个ASCII码字符中每个字节得最高位为0。这样就能区别一个机内码到底对应一个汉字还就是两个西文字符。 6)“8421码就就是二进制数”。这种说法对吗?为什么?

答:这种说法就是不对得。8421码就是一种最简单得有权码,它选取4位二进制数得前10个代码0000~1001分别对应表示十进制数得10个数码。若按权求与,与数就等于该代码所对应得十进制数.

8421码就是一种编码方式,用于十进位制与二进制数之间得转换。

而二进制数就是用0与1两个数码来表示得数。二者就是不同得概念,不能等同。 7)如何识别浮点数得正负?浮点数能表示得数值范围与数值得精确度取决于什么?

答:当采用一般浮点数格式表示浮点数时,阶码与尾数都各包含一位符号位。浮点数得正负由尾数得得符号位决定.当采用IEEE754格式时,通过数符就能判断出浮点数得正负。

浮点数能表示得数值范围与数值得精确度,分别取决于阶码得位数与尾数得位数. 8)简述CRC得纠错原理.

答:发送部件将某信息得CRC码传送至接收部件,接收部件收到CRC码后,仍用约定得生成多项式G(x)去除,若余数为0,表示传送正确;若余数不为0,表示出错,再由余数得值来确定哪一位出错,从而加以纠正。具体得纠错原理如下:

(1)不论错误出现在哪一位,均要通过将出错位循环左移到最左边得一位上时被纠正; (2)不为零余数得具有循环特性。即在余数后面补一个零除以生成多项目式,将得到下一个余数,继续在新余数基础上补零除以生成多项式,继续该操作,余数最后能循环到最开始得余数。

(3)CRC就就是利用不为零余数得循环特性,在循环计算余数得同时,将收到得CRC编码同步移动,当余数循环到等于最左边位出错对应得余数时,表明已将出错得位移到CRC码得最左边,对出错位进行纠错.

(4)继续进行余数得循环计算,并同步移动CRC编码,当余数又回到最开始得值时,纠

错后得CRC码又回到了最开始得位置.至此,完成CRC得纠错任务。 2、3 写出下列各数得原码、反码与补码。

0, 一0, 0、10101, 一0、10101, 0、11111, 一0、11111, -0、10000, 0、10000 解:

x=0,则[+0]原 = 0、00…0 , [+0 ]反= 0、00…0,[+0]补 =0、00…0; x=-0,则[-0]原 = 1、00…0,[-0]反 = 1、11…l,[—0]补 = 0、00…0; x=0、10101,则[x]原 =0、10101,[x]反 =0、10101,[x]补 =0、10101; x=一0、10101,则[x]原 =1、10101,[x]反 =1、01010,[x]补 =1、01011; x=0、11111,则[x]原 =0、11111,[x]反 =0、00000,[x]补 =0、00001;

x=一0、11111,则[x]原 =1、11111,[x]反 =1、00000,[x]补 =1、00001; x=-0、10000,则[x]原 =1、10000,[x]反 =1、01111,[x]补 =1、10000; x=0、10000,则[x]原 =0、10000,[x]反 =0、10000,[x]补 =0、10000。 2、4 已知数得补码表示形式,求数得真值。

[x]补=0、10010, [x]补=1、10010, [x]补=1、11111, [x]补=1、00000, [x]补=0、10001, [x]补=1、00001,

解:

[x]补=0、10010,则[x]原=0、10010,x=0、10010; [x]补=1、10010,则[x]原=1、01101,x=-0、01101; [x]补=1、11111,则[x]原=1、00000,x=-0; [x]补=1、00000,则[x]原=1、11111,x=-0、11111;

[x]补=0、10001,则[x]原=0、10001,x=0、10001; [x]补=1、00001,则[x]原=1、11110,x=-0、11110。 2、5 已知x=0、10110,y=—0、01010,求:

[x/2]补, [x/4]补, [y/2]补, [2y]补

解: [x]原=0、10110=[x]反=[x]补, 所以[x/2]补=0、010110,[x/4]补=0、0010110; [y]原=1、01010,[y]反=1、10101,[y]补=1、10110, 所以[y/2]补=1、110110,[2y]补=1、0110。

2。6 C语言中允许无符号数与有符号整数之间得转换, 下面就是一段C语言代码: Int x =—1;

Unsigned u=2147483648;

Printf (“x=%u=%d\\n”,x,x); Printf (“u=%u=%d\\n”,u,u);

给出在32位计算机中上述程序段得输出结果并分析原因、

解:x=4294967295=—1;u=2147483648=-2147483648

原因:x就是int型,在计算机中以补码形式存在。%u以无符号输出,%d输出真值,所以x=4294967295=-1。

u=21就是一个无符号数,无溢出,由于首位为1

%u符号输出第一位为非符号位,所以就是2147483648

%d 第一位为符号位,所以就是负数,取反加1还就是231所以就是-2147483648。

2、7 分析下列几种情况下所能表示得数据范围分别就是多少 1)16位无符号数;

2)16位原码定点小数; 3)16位补码定点小数; 4) 16位补码定点整数; 解:

1)16位无符号数:0 ~ 1111 1111 1111 1111,即0 ~ 26-1=65535

2)16位原码定点小数:1、111 1111 1111 1111 ~ 0、111 1111 1111 1111,

55

即 —(1-2-1)~ 1—2-1

3)16位补码定点小数:1、000 0000 0000 0000 ~ 0、111 1111 1111 111

-5

1,即 —1 ~ 1-21

4) 16位补码定点整数:1000 0000 0000 0000 ~ 0111 1111 1111 1111,即 -1

25 ~ 215-1

2、8 用补码表示8位二进制整数,最高位用一位表示符号(即形如x0x1x2x3x4x5x6x7)时,模应为多少?

解:因为8位二进制数补码得表示范围为:-128~127一共有256个数,所以模为256。

2、9 用IEEE754 32位浮点数标准表示十进制数

a) b)3.1415927 c)64000 解:

a) 首先分别将整数与分数部分转换成二进制数: =-110、101 移动小数点,使其变成1、M得形式: -110、101=—1、10101*2 于就是得到:

S=0, e = 2,E= 10+01111111 = 10000001,M = 10101 最后得到32位浮点数得二进制存储格式为:

1100 0000 1101 0100 0000 0000 0000 0000=(C0D40000)16 b) 首先分别将整数与分数部分转换成二进制数: 3、1415927=11、111110110101 移动小数点,使其变成1、M得形式

11、111110110101=1、1111110110101×2 于就是得到:

S=0, e = 1,E= 1+01111111 =,M = 111111011010 最后得到32位浮点数得二进制存储格式为:

0100 0000 0100 1001 0000 1111 1101 1010=(40490FDA)16 c) 首先将6400转换成二进制数: 64000=11

移动小数点,使其变成1、M得形式

11=1、1×21 于就是得到:

S=0, e = 12,E= 1100+01111111 =10001011,M = 1001 最后得到32位浮点数得二进制存储格式为:

0100 0101 1100 1000 0000 0000 0000 0000=(45C80000) 16

2、10 求与IEEE754 32位浮点数43940000H对应得十进制数。 解:

43940000H=(0100 0011 1001 0100 0000 0000 0000 0000)2 S=0,E=(10000111)2-127=8,M=1、00101

所以表示数为100101000,对应得十进制数为296。 2、11 求32位 IEEE754 浮点数能表示得最大数与最小数。

解:用IEEE754格式(E得取值范围:1~254,留出全0与全1分别表示0与无穷大)

31 30 23 22 0

SE M (1) 最大数得二进制表示: 0 11111110 11111111111111111111111 即 2(2) 最小数得二进制表示:

1 11111110 11111111111111111111111 即 - 2(2-2

127

—23

127

(2—2)

-23

)

2、12 设有两个正浮点数:N1=2m×M1,N2=2×M2。

(1)若m〉n,就是否有N1>N2?

(2)若M1与M2就是规格化得数,上述结论就是否正确? 解:(1)不一定。

?例如,N1=2×0、001,N2=22×0、01,此时m>n,却有N1=N2。

32

再如,N1=2×0、001,N2=2×0、1,此时m>n,却有N1<N2。 (2)正确。

因为浮点数规格化,要求尾数得最高位为非0数码,即当尾数得值不为零时,其绝对值应大于或等于(1/2)10。

那么M1与M2都必须就是0、1× × … ×得形式。这时,若m>n,则一定有N1>N2.

2、13 设二进制浮点数得阶码为3位,尾数就是7位。用模2补码写出它们所能表示得最大正数、最小正数、最大负数与最小负数,并将它们转换成十进制数。 解: ? 补码? ? 真值

3—6

最大正数: 011;0、111111, 2×(1-2)

3-6

最小正数: 101;0、000001, 2×2

3-6

最大负数: 101;1、111111, -2×2

3-6

最小负数: 011;1、000000, —2×(1-2)

2、14 将下列十进制数表示成浮点规格化数,阶码4位,尾数10位,各含1位符号,阶码

与尾数均用补码表示。

(1)57/128 (2) —69/128

解:(1)57/128=(0、0111001)2,记x=0、0111001,则[x]原=[x]反=[x]补=0、0111001,

规格化:[x]补=0、111001*21

阶码得原码为:1001,因此补码为:1111 尾数为:0111001000

表示成浮点规格化数:1111 0111001000

(2)-69/128=(-0、1000101)2,记x=—0、1000101,则[x]原=1、1000101,[x]反=1、0111010,[x]补=1、0111011,

无需规格化,阶码为0000,尾数为1011101100 表示成浮点规格化数:000

2、15 设有效信息为01011011,分别写出奇校验码与偶校验码。如果接收方收到得有效信息为01011010,说明如何发现错误。 解:奇偶校验位分别为:0与1, 奇校验码:010110110 偶校验码:010110111

如果采用奇校验,则发送方发出得奇校验码x=10(前8位就是有效信息位,最后一位就是校验位),

如果接收方收到得x=010110100 (只有1位出错,最后一个0就是校验位),

接收方按奇校验方式根据计算得到得验位C'=1 ,与从信息中读到得校验码得取值不同,表明传送得信息发生了错误。

如果采用偶校验,利用相似得方法可以发现错误。

2、16由 6 个字符得 7 位 ASCII 编码排列,再加上水平与垂直偶校验位构成如表2、23得行列结构(最后一列为水平奇偶校验位,最后一行为垂直奇偶校验位)

表2、23 ASCII码交叉校验

字符

7 位 ASCII 码

1 X3 1 1 X8 1 1

HP 0 1 0 1 0 1 X12

3 0 X1 X2 0 0 1 Y1 1 0 0 1 0 0 + X4 1 0 1 0 1 Y2 0 1 X5 X6 1 1 D 1 0 0 X7 1 0 = 0 X9 1 1 1 X10 VP 0 0 1 1 1 X11

则 X1 X2 X3 X4 处得比特分别为 _1110_; X5 X6 X7 X8 处得比特分别为 _1000_; X9 X10 X11 X12 处得比特分别为 _1011_; Y1 与 Y2 处得字符分别为 __I__ 与 __7__。 解答思路:利用交叉奇/偶校验原理来确定各个X值,再查询ASCII码表获知 Y1 与 Y2就是什么字符.

2、17 设8位有效信息为01101ll0,试写出它得海明校验码。给出过程,说明分组检测方式,并给出指误字及其逻辑表达式。如果接收方收到得有效信息变成01101111,说明如何定位错误并纠正错误。

解:被检验位有8位,设检验位有r位

因为:8+r<=2r—1 r=4;

设四位分别为P1,P2,P3,P4 海明码为:P1P20P3110P41110 P1:3,5,7,9,11 P2:3,6,7,10,11 P3:5,6,7,12

P4:9,10,11,12