白中英第五版计算机组成原理课后习题参考答案第一章计算机系统概述4、冯•诺依曼型计算机的主要设计思想是什么?它包括哪些主要组成部分?答:冯•诺依曼型计算机的主要设计思想是存储程序和程序控制,其中存储程序是指将程序和数据事先存放到存储器中,而程序控制是指控制器依据存储的程序来控制全机协调地完成计算任务。总体来讲,存储程序并按地址顺序执行,这就是冯•诺依曼型计算机的主要设计思想。5、什么是存储容量?什么是单元地址?什么是数据字?什么是指令字?答:见教材P8和P10。7、指令和数据均存放在内存中,计算机如何区分它们是指令还是数据?答:见教材P10。第二章运算方法和运算器1、写出下列各整数的原码、反码、补码表示(用8位二进制数)。真值原码反码补码-35-00100011101000111101110011011101-128-10000000无法表示无法表示10000000-127-01111111111111111000000010000001-1-000000011000000111111110111111113、有一个字长为32位的浮点数,符号位1位,阶码8位,用移码表示,尾数23位,用补码表示,基数为2,请写出:(1)最大数的二进制表示阶码用移码表示,题中并未说明具体偏移量,故此处按照移码的定义,即采用偏移量为27=128,则此时阶码E的表示范围为00000000~11111111,即0~255,则在上述条件下,浮点数为最大数的条件如下:符号S为正(1)阶码E最大(8)尾数M最大正数(23)01111111111111111111111111111111所以最大数的二进制表示为:011111111111111111111111111111111111对应十进制真值为:+(1-2-23)×2127(2)最小数的二进制表示浮点数为最小数的条件如下:符号S为负(1)阶码E最大(8)尾数M最小负数(23)11111111100000000000000000000000所以最小数的二进制表示为:11111111100000000000000000000000对应十进制真值为:-1×2127(3)规格化数所表示数的范围规格化要求尾数若为补码表示,则符号位和最高有效位符号必须不同。(A)浮点数为最大正数的条件如下:符号S为正(1)阶码E最大(8)尾数M最大正数(23)01111111111111111111111111111111所以最大正数的二进制表示为:011111111111111111111111111111111111对应十进制真值为:+(1-2-23)×2127(B)浮点数为最小正数的条件如下:符号S为正(1)阶码E最小(8)尾数M最小正数(23)00000000010000000000000000000000所以最小正数的二进制表示为:00000000010000000000000000000000对应十进制真值为:+2-1×2-128=+2-129(C)浮点数为最大负数的条件如下:符号S为负(1)阶码E最小(8)尾数M最大负数(23)10000000001111111111111111111111所以最大负数的二进制表示为:00000000001111111111111111111111对应十进制真值为:-(2-1+2-23)×2-128(D)浮点数为最小负数的条件如下:符号S为负(1)阶码E最大(8)尾数M最小负数(23)11111111100000000000000000000000所以最小负数的二进制表示为:00000000000000000000000000000000对应十进制真值为:-1×2127所以,规格化数所表示数的范围如下:正数+2-129~+(1-2-23)×2127负数-2127~-(2-1+2-23)×2-1284、将下列十进制数表示成IEEE754标准的32位浮点规格化数。(2)-27/64解:-27/64D=-0.011011B=-1.1011×2-2,则阶码E=-2+127=125,则浮点数为:符号S(1)阶码E(8)尾数M(23)101111101101100000000000000000005、已知x和y,用变形补码计算x+y,同时指出结果是否溢出。(2)x=11011,y=-10101解:[x]变补=00,11011,[y]变补=11,01011,则[x]变补00,11011+[y]变补11,01011100,00110最高进位1丢掉,则[x+y]变补=00,00110,符号位为00,表示结果为正数,且无溢出,即:x+y=+00110(3)x=-10110,y=-00001解:[x]变补=11,01010,[y]变补=11,11111,则[x]变补11,01010+[y]变补11,11111111,01001最高进位1丢掉,则[x+y]变补=11,01001,符号位为11,表示结果为负数,且无溢出,即:x+y=-101116、已知x和y,用变形补码计算x-y,同时指出结果是否溢出。(1)x=11011,y=-11111解:[x]变补=00,11011,[y]变补=11,00001,[-y]变补=00,11111,则[x]变补00,11011+[-y]变补00,1111101,11010则[x-y]变补=01,11010,符号位为01,表示结果为正数,且发生正溢。(2)x=10111,y=11011解:[x]变补=00,10111,[y]变补=00,11011,[-y]变补=11,00101,则[x]变补00,10111+[-y]变补11,0010111,11100则[x-y]变补=11,11100,符号位为11,表示结果为负数,且无溢出,即x-y=-00100。7、用原码一位乘计算x×y。(2)x=-11111,y=-11011解:根据原码一位乘的运算规则,乘积的符号位单独处理x0y0,数值部分为绝对值相乘x*.y*,其中数值部分的运算如下:部分积乘数说明0,00000+0,1111111011部分积初态z0=0+x*0,111110,01111+0,1111111101右移一位,得z1+x*1,011100,10111+0,0000001110右移一位,得z2+00,101110,01011+0,1111110111右移一位,得z3+x*1,010100,10101+0,1111101011右移一位,得z3+x*1,101000,1101000101右移一位,得z3由上可得,数值部分的乘积为:x*.y*=0,1101000101,而乘积符号位x0y0=11=0,则[x.y]原=0,1101000101,即x×y=+1101000101。8、用加减交替法计算x÷y(先乘1个比例因子变成小数)。(2)x=-01011,y=11001解:按照加减交替原码除法的运算规则,符号位单独处理x0y0,商值由两数绝对值相除x*/y*求得,且当余数Ri0,商1,做2Ri-y*运算,当余数Ri0,商0,做2Ri+y*运算。根据定点除法的约束条件,小(整)数定点机中,被乘数、乘数和商必须均为小(整)数。而题中被乘数和乘数均为整数,且被乘数小于乘数,两者相除结果为小数,不符合整数定点机的要求,故可先将被乘数和乘数乘以一个比例因子2-5,将被乘数和乘数变为小数,两者相除商也为小数,则符合小数定点机的要求。乘以比例因子2-5后,可得:[x]原=1.01011,[y]原=0.11001,[x*]补=0.01011,[y*]补=0.11001,[-y*]补=1.00111,则加减交替法的运算过程如下:被除数(余数)商说明0.01011+1.001110.00000+[-y*]补(减除数)1.100101.00100+0.1100100余数为负,商0左移一位+[y*]补(加除数)1.111011.11010+0.110010000余数为负,商0左移一位+[y*]补(加除数)0.100111.00110+1.00111001001余数为正,商1左移一位+[-y*]补(减除数)0.011010.11010+1.0011100110011余数为正,商1左移一位+[-y*]补(减除数)0.000010.00010+1.001110011100111余数为正,商1左移一位+[-y*]补(减除数)1.01001+0.11001001110余数为负,商0(最后一次商0,说明不够减而减了,此处须再恢复余数)+[y*]补(加除数)0.000100.0000000010因余数前后共左移了5次须右移5次,才得真正余数由上可得,商值为:x*/y*=0.01110,而符号位x0y0=10=1,则[x÷y]原=1.01110,即x÷y=-0.01110,余数为0.0000000010。9、设阶码3位,尾数6位,按浮点运算方法,完成下列取值的[x+y]、[x-y]运算。(2)x=2-101×(-0.010110),y=2-100×(0.010110)解:[x]补=11,011;11.101010,[y]补=11,100;00.010110(A)求[x+y]对阶:[ΔE]补=[Ex]补-[Ey]补=11,011+00,100=11,111由上式可得[ΔE]补=11,111,即阶差为-1,所以Mx--1,Ex+1所以,[x]补’=11,100;11.110101(0)尾数求和:[Mx]补’=11.110101(0)对阶后的尾数[Mx]补’+[My]补=00.010110=100.001011(0)即[x+y]补=11,100;00.001011,因尾数不符合规格化要求,需左规。规格化:尾数左规2次后得:[x+y]补=11,010;00.101100④舍入处理:采用0舍1入法,因对阶时尾数右移丢0,故可舍去。⑤溢出判断:因阶码符号位为11,故浮点数无溢出。所以最终结果为x+y=+0.101100×2-110(B)求[x-y]对阶:[ΔE]补=[Ex]补-[Ey]补=11,011+00,100=11,111由上式可得[ΔE]补=11,111,即阶差为-1,所以Mx--1,Ex+1所以,[x]补’=11,100;11.110101(0)尾数求和:[Mx]补’=11.110101(0)对阶后的尾数[Mx]补’+[-My]补=11.101010=111.011111(0)即[x-y]补=11,100;11.011111,尾数符合规格化要求,无需规格化。规格化:无需规格化④舍入处理:采用0舍1入法,因对阶时尾数右移丢0,故可舍去。⑤溢出判断:因阶码符号位为11,故浮点数无溢出。所以最终结果为x-y=-0.100001×2-10012、用IEEE32位浮点格式表示如下的数:(2)-1.5解:-1.5D=-1.1B=-1.1×20,所以阶码E=0+127=127,则有:符号位(1)阶码E(8)尾数M(23)10111111110000000000000000000000十六进制表示BFC00000(4)1/16解:1/16D=0.0001B=1.0×2-4,所以阶码E=-4+127=123,则有:符号位(1)阶码E(8)尾数M(23)00111101100000000000000000000000十六进制表示3D80000013、下列各数使用了IEEE32位浮点格式,相等的十进制数是什么?(2)00111111010100000000000000000000解:根据IEEE32位浮点格式可得,阶码E=01111110=126,则e=126-127=-1,所以浮点数为:+1.101×2-1=+0.1101,则对应十进制数为:0.5+0.25+0.0625=0.8125。第三章多层次的存储器1、设有一个具有20位地址和32位字长的存储器,问:(1)该存储器能存储多少个字节信息?(220×32/8=4MB)(2)如果存储器由512K×8位SRAM芯片组成,需要多少片?(220×32/512K×8=8)(3)需要多少位地址做芯片选