计算机组织与系统结构第三章习题答案.docx
- 文档编号:24170830
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:19
- 大小:84.48KB
计算机组织与系统结构第三章习题答案.docx
《计算机组织与系统结构第三章习题答案.docx》由会员分享,可在线阅读,更多相关《计算机组织与系统结构第三章习题答案.docx(19页珍藏版)》请在冰豆网上搜索。
计算机组织与系统结构第三章习题答案
第3章习题答案
2(4)高级语言中的运算和机器语言(即指令)中的运算是什么关系?
假定某一个高级语言源程序P中有乘、除运算,但机器M中不提供乘、除运算指令,则程序P能否在机器M上运行?
为什么?
参考答案:
(略)
3.考虑以下C语言程序代码:
intfunc1(unsignedword)
{
return(int)((word<<24)>>24);
}
intfunc2(unsignedword)
{
return((int)word<<24)>>24;
}
假设在一个32位机器上执行这些函数,该机器使用二进制补码表示带符号整数。
无符号数采用逻辑移位,带符号整数采用算术移位。
请填写下表,并说明函数func1和func2的功能。
W
func1(w)
func2(w)
机器数
值
机器数
值
机器数
值
0000007FH
127
0000007FH
+127
0000007FH
+127
00000080H
128
00000080H
+128
FFFFFF80H
–128
000000FFH
255
000000FFH
+255
FFFFFFFFH
–1
00000100H
256
00000000H
0
00000000H
0
函数func1的功能是把无符号数高24位清零(左移24位再逻辑右移24位),结果一定是正的有符号数;而函数func2的功能是把无符号数的高24位都变成和第25位一样,因为左移24位后进行算术右移,高24位补符号位(即第25位)。
4.填写下表,注意对比无符号数和带符号整数的乘法结果,以及截断操作前、后的结果。
模式
x
y
x×y(截断前)
x×y(截断后)
机器数
值
机器数
值
机器数
值
机器数
值
无符号数
110
6
010
2
001100
12
100
4
二进制补码
110
–2
010
+2
111100
–4
100
–4
无符号数
001
1
111
7
000111
7
111
7
二进制补码
001
+1
111
–1
111111
–1
111
–1
无符号数
111
7
111
7
110001
49
001
1
二进制补码
111
–1
111
–1
000001
+1
001
+1
5.以下是两段C语言代码,函数arith()是直接用C语言写的,而optarith()是对arith()函数以某个确定的M和N编译生成的机器代码反编译生成的。
根据optarith(),可以推断函数arith()中M和N的值各是多少?
#defineM
#defineN
intarith(intx,inty)
{
intresult=0;
result=x*M+y/N;
returnresult;
}
intoptarith(intx,inty)
{
intt=x;
x<<=4;
x-=t;
if(y<0)y+=3;
y>>2;
returnx+y;
参考答案:
可以看出x*M和“intt=x;x<<=4;x-=t;”三句对应,这些语句实现了x乘15的功能(左移4位相当于乘以16,然后再减1),因此,M等于15;
y/N与“if(y<0)y+=3;y>>2;”两句对应,功能主要由第二句“y右移2位”实现,它实现了y除以4的功能,因此N是4。
而第一句“if(y<0)y+=3;”主要用于对y=–1时进行调整,若不调整,则–1>>2=–1而–1/4=0,两者不等;调整后–1+3=2,2>>2=0,两者相等。
思考:
能否把if(y<0)y+=3;改成if(y<0)y+=2;?
不能!
因为y=-4时不正确。
6.设A4A1和B4B1分别是四位加法器的两组输入,C0为低位来的进位。
当加法器分别采用串行进位和先行进位时,写出四个进位C4C1的逻辑表达式。
参考答案:
串行进位:
C1=X1C0+Y1C0+X1Y1
C2=X2C1+Y2C1+X2Y2
C3=X3C2+Y3C2+X3Y3
C4=X4C3+Y4C3+X4Y4
并行进位:
C1=X1Y1+(X1+Y1)C0
C2=X2Y2+(X2+Y2)X1Y1+(X2+Y2)(X1+Y1)C0
C3=X3Y3+(X3+Y3)X2Y2+(X3+Y3)(X2+Y2)X1Y1+(X3+Y3)(X2+Y2)(X1+Y1)C0
C4=X4Y4+(X4+Y4)X3Y3+(X4+Y4)(X3+Y3)X2Y2+(X4+Y4)(X3+Y3)(X2+Y2)X1Y1+(X4+Y4)(X3+Y3)(X2+Y2)(X1+Y1)C0
7.用SN74181和SN74182器件设计一个16位先行进位补码加/减运算器,画出运算器的逻辑框图,并给出零标志、进位标志、溢出标志、符号标志的生成电路。
参考答案(图略):
逻辑框图参见教材中的图和图,将两个图结合起来即可,也即只要将图中的B输入端的每一位Bi取反,得到Bi,和原码Bi一起送到一个二路选择器,由进位C0作为选择控制信号。
当C0为1时做减法,此时,选择将Bi作为SN74181的B输入端;否则,当C0为1时,做加法。
零标志ZF、进位标志CF、溢出标志OF、符号标志SF的逻辑电路根据以下逻辑表达式画出即可。
ZF=F15+F14+F13+F12+F11+F10+F9+F8+F7+F6+F5+F4+F3+F2+F1+F0
CF=C16
OF=C0(A15B15F15+A15B15F15)+C0(A15B15F15+A15B15F15)
SF=F15
8.用SN74181和SN74182器件设计一个32位的ALU,要求采用两级先行进位结构。
(1)写出所需的SN74181和SN74182芯片数。
(2)画出32位ALU的逻辑结构图。
参考答案(图略):
将如图所示的两个16位ALU级联起来即可,级联时,低16位ALU的高位进位C16作为高16位ALU的低位进位C0,因此,只要用8片SN74181和2片SN74182。
9.已知x=10,y=–6,采用6位机器数表示。
请按如下要求计算,并把结果还原成真值。
(1)求[x+y]补,[x–y]补。
(2)用原码一位乘法计算[x×y]原。
(3)用MBA(基4布斯)乘法计算[x×y]补。
(4)用不恢复余数法计算[x/y]原的商和余数。
(5)用不恢复余数法计算[x/y]补的商和余数。
参考答案:
[10]补=001010[–6]补=111010 [6]补=000110[10]原=001010[–6]原=100110
(1)[10+(–6)]补=[10]补+[–6]补=001010+111010=000100(+4)
[10–(–6)]补=[10]补+[–(–6)]补=001010+000110=010000(+16)
(2)先采用无符号数乘法计算001010×000110的乘积,原码一位乘法过程(前面两个0省略)如下:
CPY说明
000000110P0=0
+0000y4=0,+0
00000C,P和Y同时右移一位
000000011得P1
+1010y3=1,+X
01010C,P和Y同时右移一位
001010001得P2
+1010y2=1,+X
011110000C,P和Y同时右移一位
001111000得P3
+0000y1=0,+0
00111C,P和Y同时右移一位
000111100得P4
若两个6位数相乘的话,则还要右移两次,得000000111100
符号位为:
01=1,因此,[X×Y]原=100000111100
即X×Y=–111100B=–60
(3)[–10]补=110110,布斯乘法过程如下:
PYy-1说明
0000001110100设y-1=0,[P0]补=0
y0y-1=00,P、Y直接右移一位
0000000111010得[P1]补
+110110y1y0=10,+[–X]补
110110P、Y同时右移一位
1110110011101得[P2]补
+001010y2y1=01,+[X]补
000101P、Y同时右移一位
0000101001110得[P3]补
+1101101001110y3y2=10,+[–X]补
111000P、Y同时右移一位
1111000100111得[P4]补
+0000000100111y4y3=11,+0
111100P、Y同时右移一位
1111100010011得[P5]补
+0000000010011y5y4=11,+0
111110P、Y同时右移一位
1111110001001得[P6]补
因此,[X×Y]补=111111000100,即X×Y=–111100B=–60
(4)因为除法计算是2n位数除n位数,所以[6]原=0110,[10]原=00001010,[–6]补=1010,
商的符号位:
01=1,运算过程(前面两个0省略)如下:
余数寄存器R余数/商寄存器Q说明
00001010开始R0=X
+1010R1=X–Y
101010100R1<0,则q4=0,没有溢出
010101002R1(R和Q同时左移,空出一位商)
+0110R2=2R1+Y
101101000R2<0,则q3=0
011010002R2(R和Q同时左移,空出一位商)
+0110R3=2R2+Y
110010000R3<0,则q2=0
100100002R3(R和Q同时左移,空出一位商)
+0110R3=2R2+Y
111100000R4<0,则q1=0
111000002R4(R和Q同时左移,空出一位商)
+0110R5=2R4+Y
010000001R5>0,则q0=1
商的数值部分为:
00001。
所以,[X/Y]原=00001(最高位为符号位),余数为0100。
(5)将10和–6分别表示成补码形式为:
[10]补=01010,[–6]补=11010,计算过程如下:
先对被除数进行符号扩展,[10]补=0000001010,[6]补=00110
余数寄存器R余数/商寄存器Q说明
0000001010开始R0=[X]
+11010R1=[X]+[Y]
1101001010R1与[Y]同号,则q5=1
10100101012R1(R和Q同时左移,空出一位上商1)
+00110R2=2R1+[–Y]
1101010101R2与[Y]同号,则q4=1,
10101010112R2(R和Q同时左移,空出一位上商1)
+00110R3=2R2+[-Y]
1101101011R3与[Y]同号,则q3=1
10110101112R3(R和Q同时左移,空出一位上商1)
+00110R4=2R3+[–Y]
1110010111R4与[Y]同号,则q2=1
11001011112R4(R和Q同时左移,空出一位上商0)
+00110R5=2R4+[-Y]
1111101111R5与[Y]同号,则q1=1,
11110111112R5(R和Q同时左移,空出一位上商1)
+00110R6=2R5+[–Y]
0010011110R6与[Y]异号,则q0=0,Q左移,空出一位上商1
+00000+1商为负数,末位加1;余数不需要修正
0010011111
所以,[X/Y]补=11111,余数为00100。
即:
X/Y=–0001B=–1,余数为0100B=4
将各数代入公式“除数×商+余数=被除数”进行验证,得:
(–6)×(–1)+4=10。
10.若一次加法需要1ns,一次移位需要。
请分别计算用一位乘法、两位乘法、基于CRA的阵列乘法、基于CSA的阵列乘法四种方式计算两个8位无符号二进制数乘积时所需的时间。
参考答案:
一位乘法:
8次右移,8次加法,共计12ns;
二位乘法:
4次右移,4次加法,共计6ns;
基于CRA的阵列乘法:
每一级部分积不仅依赖于上一级部分积,还依赖于上一级最终的进位,而每一级进位又是串行进行的,所以最长的路径总共经过了8+2×(8–1)=22次全加器,共计约22ns;
基于CSA的阵列乘法:
本级进位和本级和同时传送到下一级,同级部分积之间不相互依赖,只进行O(N)次加法运算,因此,共计约8ns。
11.在IEEE754浮点数运算中,当结果的尾数出现什么形式时需要进行左规,什么形式时需要进行右规?
如何进行左规,如何进行右规?
参考答案:
(1)对于结果为±1x.xx……x的情况,需要进行右规。
右规时,尾数右移一位,阶码加1。
右规操作可以表示为:
MbMb×2-1,EbEb+1。
右规时注意以下两点:
a)尾数右移时,最高位“1”被移到小数点前一位作为隐藏位,最后一位移出时,要考虑舍入。
b)阶码加1时,直接在末位加1。
(2)对于结果为±……01x……x的情况,需要进行左规。
左规时,数值位逐次左移,阶码逐次减1,直到将第一位“1”移到小数点左边。
假定k为结果中“±”和左边第一个1之间连续0的个数,则左规操作可以表示为:
MbMb×2k,EbEb–k。
左规时注意以下两点:
a)尾数左移时数值部分最左k个0被移出,因此,相对来说,小数点右移了k位。
因为进行尾数相加时,默认小数点位置在第一个数值位(即:
隐藏位)之后,所以小数点右移k位后被移到了第一位1后面,这个1就是隐藏位。
b)执行EbEb–k时,每次都在末位减1,一共减k次。
12.在IEEE754浮点数运算中,如何判断浮点运算的结果是否溢出?
参考答案:
浮点运算结果是否溢出,并不以尾数溢出来判断,而主要看阶码是否溢出。
尾数溢出时,可通过右规操作进行纠正。
阶码上溢时,说明结果的数值太大,无法表示;阶码下溢时,说明结果数值太小,可以把结果近似为0。
在进行对阶、规格化、舍入和浮点数的乘/除运算等过程中,都需要对阶码进行加、减运算,可能会发生阶码上溢或阶码下溢,因此,必须对阶码进行溢出判断。
(有关对阶码进行溢出判断的方法可参见教材中相关章节。
)
13.假设浮点数格式为:
阶码是4位移码,偏置常数为8,尾数是6位补码(采用双符号位),用浮点运算规则分别计算在不采用任何附加位和采用2位附加位(保护位、舍入位)两种情况下的值。
(假定对阶和右规时采用就近舍入到偶数方式)
(1)(15/16)×27+(2/16)×25
(2)(15/16)×27–(2/16)×25
(3)(15/16)×25+(2/16)×27(4)(15/16)×25–(2/16)×27
参考答案(假定采用隐藏位):
X=(15/16)×27=×27=2×26
Y1=(2/16)×25=×25=2×22
Y2=(–2/16)×25=–×25=(–2×22
K=(15/16)×25=×25=2×24
J1=(2/16)×27=×27=2×24
J2=(–2/16)×27=–×27=(–2×24
根据题目所给的各种位数,可以得到在机器中表示为:
[X]浮=001110
(1)111000[Y1]浮=001010
(1)000000[Y2]浮=111010
(1)000000
[K]浮=001100
(1)111000[J1]浮=001100
(1)000000[J2]浮=111100
(1)000000
所以,Ex=1110,Mx=00
(1).111000,Ey1=1010,My=00
(1).000000,Ey2=1010,My=11
(1).000000
Ek=1100,MK=00
(1).111000,EJ1=1100,MJ1=00
(1).000000,EJ2=1100,MJ2=11
(1).000000
尾数M中小数点前面有三位,前两位为数符,表示双符号,第三位加了括号,是隐藏位“1”。
没有附加位时的计算:
(1)X+Y1
[ΔE]补=[Ex]移+[–[Ey1]移]补(mod2n)=1110+0110=0100
ΔE=4,根据对阶规则可知需要对y1进行对阶,结果为:
Ey1=Ex=1110,My1=
尾数相加:
Mb=Mx+My1=001.111000+=,两位符号相等,数值部分最高位为1,不需要进行规格化,所以最后结果为:
E=1110,M=00
(1).111100,即(31/32)×27
(2)X+Y2
[ΔE]补=[Ex]移+[–[Ey2]移]补(mod2n)=1110+0110=0100;
ΔE=4,根据对阶规则可知需要对y2进行对阶,结果为:
Ey2=Ex=1110,My2=
尾数相加:
Mb=Mx+My2=001.111000+=,两位符号相等,数值部分最高为1,不需要进行规格化,所以最后结果为:
E=1110,M=00
(1).110100,即(29/32)×27
(3)K+J1
[ΔE]补=[EK]移+[–[EJ1]移]补(mod2n)=1100+0100=0000;
ΔE=0,根据对阶规则可知不需要进行对阶。
尾数相加:
Mb=MK+MJ1=001.111000+=,两位符号不等,说明尾数溢出,需要进行右规,最后结果为:
E=1101,M=00
(1).011100,即(23/32)×26
(4)K+J2
[ΔE]补=[EK]移+[–[EJ2]移]补(mod2n)=1100+0100=0000;
ΔE=0,根据对阶规则可知不需要进行对阶。
尾数相加:
Mb=MK+MJ2=001.111000+=,两位符号相等,数值部分最高位为0,需要进行左规,所以最后结果为:
E=1011,M=00
(1).110000,即(7/8)×24
如果有两位附加位精度上会有提高,在对阶的时候要注意小数点后就不是6位,而是8位,最后两位为保护位和舍入位。
但是由于本题6位尾数已经足够,再加2位附加位,其结果是一样的。
14.采用IEEE754单精度浮点数格式计算下列表达式的值。
(1)+(–)
(2)–(–)
参考答案:
x==...0B=...0)2×2-1
y=–=–...0B=(–...0)2×26
用IEEE754标准单精度格式表示为:
[x]浮=00111111010...0[y]浮=1000001010...0
所以,Ex=01111110,Mx=0
(1).1...0,Ey=,My=1
(1).000001010...0
尾数Mx和My中小数点前面有两位,第一位为数符,第二位加了括号,是隐藏位“1”。
以下是计算机中进行浮点数加减运算的过程(假定保留2位附加位:
保护位和舍入位)
(1)+(–)
对阶:
[ΔE]补=[Ex]移+[–[Ey]移]补(mod2n)=01111110+01111011=11111001
ΔE=–7,根据对阶规则可知需要对x进行对阶,结果为:
Ex=Ey=,Mx=...000
x的尾数Mx右移7位,符号不变,数值高位补0,隐藏位右移到小数点后面,最后移出的2位保留
尾数相加:
Mb=Mx+My=...000+...000(注意小数点在隐藏位后)
根据原码加/减法运算规则,得:
...000+...000=…000
上式尾数中最左边第一位是符号位,其余都是数值部分,尾数后面两位是附加位(加粗)。
规格化:
根据所得尾数的形式,数值部分最高位为1,所以不需要进行规格化。
舍入:
把结果的尾数Mb中最后两位附加位舍入掉,从本例来看,不管采用什么舍入法,结果都一样,都是把最后两个0去掉,得:
Mb=…0
溢出判断:
在上述阶码计算和调整过程中,没有发生“阶码上溢”和“阶码下溢”的问题。
因此,阶码Eb=。
最后结果为Eb=,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组织 系统 结构 第三 习题 答案