计算机组成原理第六章答案54731培训资料.docx
- 文档编号:27374560
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:23
- 大小:30.50KB
计算机组成原理第六章答案54731培训资料.docx
《计算机组成原理第六章答案54731培训资料.docx》由会员分享,可在线阅读,更多相关《计算机组成原理第六章答案54731培训资料.docx(23页珍藏版)》请在冰豆网上搜索。
计算机组成原理第六章答案54731培训资料
计算机组成原理第六章答案54731
第6章计算机的运算方法
2.已知X=0.a1a2a3a4a5a6(ai为0或1),讨论下列几种情况时ai各取何值。
(1)
(2)
(3)
解:
(1)若要
,只要a1=1,a2~a6不全为0即可。
(2)若要
,只要a1~a3不全为0即可。
(3)若要
,只要a1=0,a2可任取0或1;
当a2=0时,若a3=0,则必须a4=1,且a5、a6不全为0;
若a3=1,则a4~a6可任取0或1;
当a2=1时,a3~a6均取0。
3.设x为整数,[x]补=1,x1x2x3x4x5,若要求x<-16,试问x1~x5应取何值?
解:
若要x<-16,需x1=0,x2~x5任意。
(注:
负数绝对值大的补码码值反而小。
)
4.设机器数字长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。
-13/64,29/128,100,-87
解:
真值与不同机器码对应关系如下:
真值
-13/64
29/128
100
-87
二进制
-0.001101
0.0011101
1100100
-1010111
原码
1.0011010
0.0011101
01100100
11010111
补码
1.1100110
0.0011101
01100100
10101001
反码
1.1100101
0.0011101
01100100
10101000
5.已知[x]补,求[x]原和x。
[x1]补=1.1100;[x2]补=1.1001;[x3]补=0.1110; [x4]补=1.0000;
[x5]补=1,0101;[x6]补=1,1100;[x7]补=0,0111;[x8]补=1,0000;
解:
[x]补与[x]原、x的对应关系如下:
[x]补
1.1100
1.1001
0.1110
1.0000
1,0101
1,1100
0,0111
1,0000
[x]原
1.0100
1.0111
0.1110
无
1,1011
1,0100
0,0111
无
x
-0.0100
-0.0111
0.1110
-1
-1011
-100
0,0111
-10000
6.设机器数字长为8位(含1位符号位在内),分整数和小数两种情况讨论真值x为何值时,[x]补=[x]原成立。
解:
当x为小数时,若x0,则 [x]补=[x]原成立;
若x<0,当x=-1/2时,[x]补=[x]原=1.1000000,则 [x]补=[x]原成立。
当x为整数时,若x0,则 [x]补=[x]原成立;
若x<0,当x=-64时,[x]补=[x]原=1,1000000,则 [x]补=[x]原成立。
7.设x为真值,x*为绝对值,说明[-x*]补=[-x]补能否成立。
解:
当x为真值,x*为绝对值时,[-x*]补=[-x]补不能成立。
原因如下:
(1)当x<0时,由于[-x*]补是一个负值,而[-x]补是一个正值,因此此时[-x*]补=[-x]补不成立;
(2)当x0时,由于-x*=-x,因此此时[-x*]补=[-x]补的结论成立。
8.讨论若[x]补>[y]补,是否有x>y?
解:
若[x]补>[y]补,不一定有x>y。
[x]补>[y]补时x>y的结论只在x>0且y>0,及x<0且y<0时成立。
由于正数补码的符号位为0,负数补码的符号位为1,当x>0、y<0时,有x>y,但则[x]补<[y]补;同样,当x<0、y>0时,有x
9.当十六进制数9B和FF分别表示为原码、补码、反码、移码和无符号数时,所对应的十进制数各为多少(设机器数采用一位符号位)?
解:
真值和机器数的对应关系如下:
9BH
原码
补码
反码
移码
无符号数
对应十进制数
-27
-101
-100
+27
155
FFH
原码
补码
反码
移码
无符号数
对应十进制数
-128
-1
-0
+128
256
10.在整数定点机中,设机器数采用1位符号位,写出±0的原码、补码、反码和移码,得出什么结论?
解:
0的机器数形式如下:
(假定机器数共8位,含1位符号位在内)
真值
原码
补码
反码
移码
+0
00000000
00000000
00000000
10000000
-0
10000000
00000000
11111111
10000000
结论:
0的原码和反码分别有+0和-0两种形式,补码和移码只有一种形式,且补码和移码数值位相同,符号位相反。
11.已知机器数字长为4位(含1位符号位),写出整数定点机和小数定点机中原码、补码和反码的全部形式,并注明其对应的十进制真值。
整数定点机
小数定点机
原码
补码
反码
真值
原码
补码
反码
真值
0,000
0,000
0,000
+0
0.000
0.000
0.000
+0
0,001
0,001
0,001
1
0.001
0.001
0.001
0.125
0,010
0,010
0,010
2
0.010
0.010
0.010
0.250
0,011
0,011
0,011
3
0.011
0.011
0.011
0.375
0,100
0,100
0,100
4
0.100
0.100
0.100
0.500
0,101
0,101
0,101
5
0.101
0.101
0.101
0.625
0,110
0,110
0,110
6
0.110
0.110
0.110
0.750
0,111
0,111
0,111
7
0.111
0.111
0.111
0.875
1,000
0,000
1,111
-0
1.000
0.000
1.111
-0
1,001
1,111
1,110
-1
1.001
1.111
1.110
-0.125
1,010
1,110
1,101
-2
1.010
1.110
1.101
-0.250
1,011
1,101
1,100
-3
1.011
1.101
1.100
-0.375
1,100
1,100
1,011
-4
1.100
1.100
1.011
-0.500
1,101
1,011
1,010
-5
1.101
1.011
1.010
-0.625
1,110
1,010
1,001
-6
1.110
1.010
1.001
-0.750
1,111
1,001
1,000
-7
1.111
1.001
1.000
-0.875
无
1,000
无
-8
无
1.000
无
-1
12.设浮点数格式为:
阶码5位(含1位阶符),尾数11位(含1位数符)。
写出51/128、-27/1024、7.375、-86.5所对应的机器数。
要求如下:
(1)阶码和尾数均为原码。
(2)阶码和尾数均为补码。
(3)阶码为移码,尾数为补码。
解:
据题意画出该浮点数的格式:
阶符1位
阶码4位
数符1位
尾数10位
将十进制数转换为二进制:
x1=51/128=0.0110011B=2-1*0.110011B
x2=-27/1024=-0.0000011011B=2-5*(-0.11011B)
x3=7.375=111.011B=23*0.111011B
x4=-86.5=-1010110.1B=27*(-0.10101101B)
则以上各数的浮点规格化数为:
(1)[x1]浮=1,0001;0.1100110000
[x2]浮=1,0101;1.1101100000
[x3]浮=0,0011;0.1110110000
[x4]浮=0,0111;1.1010110100
(2)[x1]浮=1,1111;0.1100110000
[x2]浮=1,1011;1.0010100000
[x3]浮=0,0011;0.1110110000
[x4]浮=0,0111;1.0101001100
(3)[x1]浮=0,1111;0.1100110000
[x2]浮=0,1011;1.0010100000
[x3]浮=1,0011;0.1110110000
[x4]浮=1,0111;1.0101001100
13.浮点数格式同上题,当阶码基值分别取2和16时:
(1)说明2和16在浮点数中如何表示。
(2)基值不同对浮点数什么有影响?
(3)当阶码和尾数均用补码表示,且尾数采用规格化形式,给出两种情况下所能表示的最大正数和非零最小正数真值。
解:
(1)阶码基值不论取何值,在浮点数中均为隐含表示,即:
2和16不出现在浮点格式中,仅为人为的约定。
(2)当基值不同时,对数的表示范围和精度都有影响。
即:
在浮点格式不变的情况下,基越大,可表示的浮点数范围越大,但浮点数精度越低。
(3)r=2时,
最大正数的浮点格式为:
0,1111;0.1111111111
其真值为:
N+max=215×(1-2-10)
非零最小规格化正数浮点格式为:
1,0000;0.1000000000
其真值为:
N+min=2-16×2-1=2-17
r=16时,
最大正数的浮点格式为:
0,1111;0.1111111111
其真值为:
N+max=1615×(1-2-10)
非零最小规格化正数浮点格式为:
1,0000;0.0001000000
其真值为:
N+min=16-16×16-1=16-17
14.设浮点数字长为32位,欲表示±6万间的十进制数,在保证数的最大精度条件下,除阶符、数符各取1位外,阶码和尾数各取几位?
按这样分配,该浮点数溢出的条件是什么?
解:
若要保证数的最大精度,应取阶码的基值=2。
若要表示±6万间的十进制数,由于32768(215)<6万<65536(216),则:
阶码除阶符外还应取5位(向上取2的幂)。
故:
尾数位数=32-1-1-5=25位
25(32) 该浮点数格式如下:
阶符(1位)
阶码(5位)
数符(1位)
尾数(25位)
按此格式,该浮点数上溢的条件为:
阶码25
15.什么是机器零?
若要求全0表示机器零,浮点数的阶码和尾数应采取什么机器数形式?
解:
机器零指机器数所表示的零的形式,它与真值零的区别是:
机器零在数轴上表示为“0”点及其附近的一段区域,即在计算机中小到机器数的精度达不到的数均视为“机器零”,而真零对应数轴上的一点(0点)。
若要求用“全0”表示浮点机器零,则浮点数的阶码应用移码、尾数用补码表示(此时阶码为最小阶、尾数为零,而移码的最小码值正好为“0”,补码的零的形式也为“0”,拼起来正好为一串0的形式)。
16.设机器数字长为16位,写出下列各种情况下它能表示的数的范围。
设机器数采用一位符号位,答案均用十进制表示。
(1)无符号数;
(2)原码表示的定点小数。
(3)补码表示的定点小数。
(4)补码表示的定点整数。
(5)原码表示的定点整数。
(6)浮点数的格式为:
阶码6位(含1位阶符),尾数10位(含1位数符)。
分别写出其正数和负数的表示范围。
(7)浮点数格式同(6),机器数采用补码规格化形式,分别写出其对应的正数和负数的真值范围。
解:
(1)无符号整数:
0~216-1,即:
0~65535;
无符号小数:
0~1-2-16,即:
0~0.99998;
(2)原码定点小数:
-1+2-15~1-2-15,即:
-0.99997~0.99997
(3)补码定点小数:
-1~1-2-15,即:
-1~0.99997
(4)补码定点整数:
-215~215-1,即:
-32768~32767
(5)原码定点整数:
-215+1~215-1,即:
-32767~32767
(6)据题意画出该浮点数格式,当阶码和尾数均采用原码,非规格化数表示时:
最大负数=1,11111;1.000000001,即-2-92-31
最小负数=0,11111;1.111111111,即-(1-2-9)231
则负数表示范围为:
-(1-2-9)231——-2-92-31
最大正数=0,11111;0.111111111,即(1-2-9)231
最小正数=1,11111;0.000000001,即2-92-31
则正数表示范围为:
2-92-31——(1-2-9)231
(7)当机器数采用补码规格化形式时,若不考虑隐藏位,则
最大负数=1,00000;1.011111111,即-2-12-32
最小负数=0,11111;1.000000000,即-1231
则负数表示范围为:
-1231——-2-12-32
最大正数=0,11111;0.111111111,即(1-2-9)231
最小正数=1,00000;0.100000000,即2-12-32
则正数表示范围为:
2-12-32——(1-2-9)231
17.设机器数字长为8位(包括一位符号位),对下列各机器数进行算术左移一位、两位,算术右移一位、两位,讨论结果是否正确。
[x1]原=0.0011010;[y1]补=0.1010100;[z1]反=1.0101111;
[x2]原=1.1101000;[y2]补=1.1101000;[z2]反=1.1101000;
[x3]原=1.0011001;[y3]补=1.0011001;[z3]反=1.0011001。
解:
算术左移一位:
[x1]原=0.0110100;正确
[x2]原=1.1010000;溢出(丢1)出错
[x3]原=1.0110010;正确
[y1]补=0.0101000;溢出(丢1)出错
[y2]补=1.1010000;正确
[y3]补=1.0110010;溢出(丢0)出错
[z1]反=1.1011111;溢出(丢0)出错
[z2]反=1.1010001;正确
[z3]反=1.0110011;溢出(丢0)出错
算术左移两位:
[x1]原=0.1101000;正确
[x2]原=1.0100000;溢出(丢11)出错
[x3]原=1.1100100;正确
[y1]补=0.1010000;溢出(丢10)出错
[y2]补=1.0100000;正确
[y3]补=1.1100100;溢出(丢00)出错
[z1]反=1.0111111;溢出(丢01)出错
[z2]反=1.0100011;正确
[z3]反=1.1100111;溢出(丢00)出错
算术右移一位:
[x1]原=0.0001101;正确
[x2]原=1.0110100;正确
[x3]原=1.0001100
(1);丢1,产生误差
[y1]补=0.0101010;正确
[y2]补=1.1110100;正确
[y3]补=1.1001100
(1);丢1,产生误差
[z1]反=1.1010111;正确
[z2]反=1.1110100(0);丢0,产生误差
[z3]反=1.1001100;正确
算术右移两位:
[x1]原=0.0000110(10);产生误差
[x2]原=1.0011010;正确
[x3]原=1.0000110(01);产生误差
[y1]补=0.0010101;正确
[y2]补=1.1111010;正确
[y3]补=1.1100110(01);产生误差
[z1]反=1.1101011;正确
[z2]反=1.1111010(00);产生误差
[z3]反=1.1100110(01);产生误差
18.试比较逻辑移位和算术移位。
解:
逻辑移位和算术移位的区别:
逻辑移位是对逻辑数或无符号数进行的移位,其特点是不论左移还是右移,空出位均补0,移位时不考虑符号位。
算术移位是对带符号数进行的移位操作,其关键规则是移位时符号位保持不变,空出位的补入值与数的正负、移位方向、采用的码制等有关。
补码或反码右移时具有符号延伸特性。
左移时可能产生溢出错误,右移时可能丢失精度。
19.设机器数字长为8位(含1位符号位),用补码运算规则计算下列各题。
(1)A=9/64,B=-13/32,求A+B。
(2)A=19/32,B=-17/128,求A-B。
(3)A=-3/16,B=9/32,求A+B。
(4)A=-87,B=53,求A-B。
(5)A=115,B=-24,求A+B。
解:
(1)A=9/64=0.0010010B,B=-13/32=-0.0110100B
[A]补=0.0010010,[B]补=1.1001100
[A+B]补=0.0010010+1.1001100=1.1011110——无溢出
A+B=-0.0100010B=-17/64
(2)A=19/32=0.1001100B,B=-17/128=-0.0010001B
[A]补=0.1001100,[B]补=1.1101111,[-B]补=0.0010001
[A-B]补=0.1001100+0.0010001=0.1011101——无溢出
A-B=0.1011101B=93/128B
(3)A=-3/16=-0.0011000B,B=9/32=0.0100100B
[A]补=1.1101000,[B]补=0.0100100
[A+B]补=1.1101000+0.0100100=0.0001100——无溢出
A+B=0.0001100B=3/32
(4)A=-87=-1010111B,B=53=110101B
[A]补=10101001,[B]补=00110101,[-B]补=11001011
[A-B]补=10101001+11001011=01110100——溢出
(5)A=115=1110011B,B=-24=-11000B
[A]补=01110011,[B]补=1,1101000
[A+B]补=01110011+11101000=01011011——无溢出
A+B=1011011B=91
20.用原码一位乘、两位乘和补码一位乘(Booth算法)、两位乘计算x·y。
(1)x=0.110111,y=-0.101110;
(2)x=-0.010111,y=-0.010101;
(3)x=19,y=35;
(4)x=0.11011,y=-0.11101。
解:
先将数据转换成所需的机器数,然后计算,最后结果转换成真值。
(1)[x]原=0.110111,[y]原=1.101110,x*=0.110111,y*=0.101110
原码一位乘:
部分积
乘数y*
说明
0.000000
+0.000000
101110
部分积初值为0,乘数为0加0
0.000000
0.000000
+0.110111
010111
右移一位
乘数为1,加上x*
0.110111
0.011011
+0.110111
101011
右移一位
乘数为1,加上x*
1.010010
0.101001
+0.110111
010101
右移一位
乘数为1,加上x*
1.100000
0.110000
+0.000000
001010
右移一位
乘数为0,加上0
0.110000
0.011000
+0.110111
000101
右移一位
乘数为1,加上x*
1.001111
0.100111
100010
右移一位
即x*×y*=0.100111100010,z0=x0y0=01=1,
[x×y]原=1.100111100010,x·y=-0.100111100010
原码两位乘:
[-x*]补=1.001001,2x*=1.101110
部分积
乘数y*
Cj
说明
000.000000
+001.101110
00101110
0
部分积初值为0,Cj=0
根据yn-1ynCj=100,加2x*,保持Cj=0
001.101110
0
000.011011
+111.001001
10001011
10001011
0
右移2位
根据yn-1ynCj=110,加[-x*]补,置Cj=1
111.100100
111.111001
+111.001001
00100010
1
右移2位
根据yn-1ynCj=101,加[-x*]补,置Cj=1
111.000010
111.110000
+000.110111
10001000
1
右移2位
根据yn-1ynCj=001,加x*,保持Cj=0
000.100111
100010
即x*×y*=0.100111100010,z0=x0y0=01=1,
[x×y]原=1.100111100010,x·y=-0.100111100010
补码一位乘:
[x]补=0.110111,[-x]补=1.001001,[y]补=1.010010
部分积
乘数
Yn+1
说明
00.000000
00.000000
+11.001001
1010010
0101001
0
0
Ynyn+1=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 原理 第六 答案 54731 培训资料