计算机系统第2章习题解答
第二章习题解答
[习题2.2]
[解答]
在尾数采用补码、小数表示且p=6,阶码采用移码、整数表示且q=6,尾数基rm为16,阶码基re为2的情况下:
最大尾数为:
最小正尾数为:
最小尾数为:
最大负尾数为:
这个数的符号位是1,数据位是1110(这是数据位的第一个数因为是补码,规格化数不能和符号位相同,所以不能是全1111,但是又必须保证在补码中最大,所以是1110),1111,1111,1111,1111,1111(由于是补码,所以数越大,其真值越小,才能保证是最大负尾数),所以总的数据是1110,1111,1111,1111,1111,1111,然后取反加1,得到它的真值为0001,0000,0000,0000,0000,0001.所以最终结果是-0.100001HEX
最大阶码为:
最小阶码为:
最大正数为:
最小正数为:
最大负数为:
最小负数为:
浮点零为:
通过上面的计算,我们可以知道浮点零的范围如下:
表数精度为:
表数效率为:
能表示的规格化浮点数个数为:
[习题2.3]
[解答]
对于IEEE754的32位单精度浮点数:
如果不把正的无穷数计算在内,那么最大正数为:
最小正数为:
最大负数为:
如果不把负的无穷数计算在内,那么最小负数为:
由于有隐藏位,所以表数精度为:
但当e=0时,由于隐藏位不在起作用,所以表数精度可能不同。
尾数的基数是2,但由于采用了隐藏位,所以表数效率为100%。
对于IEEE754的64位单精度浮点数:
如果不把正的无穷数计算在内,那么最大正数为:
最小正数为:
最大负数为:
如果不把负的无穷数计算在内,那么最小负数为:
由于有隐藏位,所以表数精度为:
但当e=0时,由于隐藏位不在起作用,所以表数精度可能不同。
尾数的基数是2,但由于采用了隐藏位,所以表数效率为100%。
[习题2.5] 一台计算机系统要求浮点数的精度不低于10-7.2,表数范围正数不小于1038,且正、负数对称。尾数用原码、纯小数表示,阶码用移码、整数表示。
设计这种浮点数的格式
计算(1)所设计浮点数格式实际上能够表示的最大正数、最大负数、表数精度和表数效率。
[解答]
为了方便和提高精度,我们取尾数和阶码的基都为2,即:
且
根据表示数精度的要求:
于是可以取p=24;
根据表示数范围的要求:
即
因此可以取q=7
数据格式可以表示如下(尾数采用隐藏位):
1位1位7位23位符号阶符阶码尾数
(2)能够表示的最大正数:(1-2-24)2127,
能够表示的最大负数:-2-129,
表示数的精度:2-24,
表数效率:100%。
[习题2.6]
[解答]
在两种标准下面,0.2分别表示为:
IBM标准:
编码为:
IEEE754标准:
编码为:
(3)略,注意两种标准表数的范围和表数的精度是不相同的。
[习题2.10]
[解答]
我们可以计算出数据的大致数量:
1000条指令访问的数据总数为1000*2=2000个;
每个数据平均访问8次,所以,不同的数据个数为:
对于A处理机,所用的存储空间的大小为:
对于B处理机,指令字长由32位变为了30位(条数由256减少到64),这样,所用的存储空间的大小为:
由此我们可以看出,由于数据的平均访问次数要大于指令,所以,通过改进数据的格式来减少指令的长度,可以减少总的存储空间大小。
[习题2.14] 一台模型机共有7条指令,各指令的使用频率分别为35%,25%,20%,10%,5%,3%和2%,有8个通用数据寄存器,2个变址寄存器。
要求操作码的平均长度最短,请设计操作码的编码,并计算所设计操作码的平均长度。
设计8字长的寄存器-寄存器型指令3条,16位字长的寄存器-存储器型变址寻址方式指令4条,变址范围不小于±127。请设计指令格式,并给出各字段的长度和操作码的编码。
[解答]
要使得到的操作码长度最短,应采用Huffman编码,构造Huffman树如下:
0 1 0 1
0 1
0 1
0 1
0 1
由此可以得到7条指令的编码分别如下:
指令号出现的频率编码135%00225%01320%10410%11055%1110