计算机组成原理(第三版)唐朔飞-第六章计算机的运算方法-课后习题(1-16)

目录

第六章

1.最少用几位二进制数即可表示任一五位长的十进制正整数?

答:
五位长的十进制正整数中,最大的数99999满足条件: 2 16 ( = 65536 ) < 99999 < 2 17 ( = 131072 ) 2^{16}(=65536)<99999<2^{17}(=131072) 216(=65536)<99999<217(=131072),故最少用17位二进制数即可表示任一五位长的十进制正整数。

2.已知 X = 0. a 1 a 2 a 3 a 4 a 5 a 6 ( a i 为 0 或 1 ) X=0.a_1a_2a_3a_4a_5a_6(a_i为0或1) X=0.a1a2a3a4a5a6(ai01),讨论下列几种情况时 a i a_i ai各取何值。

( 1 ) X > 1 2 ; ( 2 ) X ≥ 1 8 ; ( 3 ) 1 4 ≥ X > 1 16 (1)X>\frac{1}{2}; (2) X\geq \frac{1}{8}; (3)\frac{1}{4}\geq X>\frac{1}{16} (1)X>21;(2)X81;(3)41X>161
答:
( 1 ) 若要 X > 1 / 2 ,只要 a 1 = 1 , a 2 ∽ a 6 不全为 0 即可 ( a 2   o r   a 3   o r   a 4   o r   a 5   o r   a 6 = 1 ) ; ( 2 ) 若要 X ≥ 1 / 8 ,只要 a 1 ∽ a 3 不全为 0 即可 ( a 1   o r   a 2   o r   a 3 = 1 ) , a 4 ∽ a 6 可任取 0 或 1 ; ( 3 ) 若要 1 / 4 ≥ X > 1 / 16 ,只要 a 1 = 0 , a 2 可任取 0 或 1 ; 当 a 2 = 0 时,若 a 3 = 0 ,则必须 a 4 = 1 ,且 a 5 、 a 6 不全为 0 ( a 5   o r   a 6 = 1 ) ; 若 a 3 = 1 ,则 a 4 ∽ a 6 可任取 0 或 1 ; 当 a 2 = 1 时, a 3 ∽ a 6 取 0 。 (1)若要X>1/2,只要a_1=1,a_2\backsim a_6不全为0即可(a_2 \ or \ a_3 \ or \ a_4 \ or \ a_5 \ or \ a_6=1);\\ (2)若要X\geq 1/8,只要a_1\backsim a_3不全为0即可(a_1 \ or \ a_2 \ or \ a_3=1),a_4\backsim a_6可任取0或1;\\ (3)若要1/4\geq X>1/16,只要a_1=0,a_2可任取0或1;\\ 当a_2=0时,若a_3=0,则必须a_4=1,且a_5、a_6不全为0(a_5\ or\ a_6=1);若a_3=1,则a_4\backsim a_6可任取0或1;\\ 当a_2=1时,a_3\backsim a_6取0。 (1)若要X>1/2,只要a1=1a2a6不全为0即可(a2 or a3 or a4 or a5 or a6=1);(2)若要X1/8,只要a1a3不全为0即可(a1 or a2 or a3=1)a4a6可任取01;(3)若要1/4X>1/16,只要a1=0a2可任取01;a2=0时,若a3=0,则必须a4=1,且a5a6不全为0(a5 or a6=1);a3=1,则a4a6可任取01;a2=1时,a3a60

3.设x为整数, [ x ] 补 = 1 , x ₁ x ₂ x 3 x 4 x 5 [x]_补=1,x_₁x_₂x_3x_4x_5 [x]=1xxx3x4x5,若要求 x < − 16 x<-16 x<16,试问 x 1 ∽ x 5 x_1\backsim x_5 x1x5应取何值?

答:
若要 x < − 16 ,需 x 1 = 0 , x 2 ∽ x 5 任意。 若要x<-16,需x_1=0,x_2\backsim x_5任意。 若要x<16,需x1=0x2x5任意。
(注:负数绝对值大的反而小。)

4.设机器数字长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。

− 13 64 , 29 128 , 100 , − 87 -\frac{13}{64},\frac{29}{128},100,-87 64131282910087
答:
真值与不同机器码对应关系如下:

真值(十进制) 真值(二进制) 原码 反码 补码
-13/64 -0.00 1101 1.001 1010 1.110 0101 1.110 0110
29/128 0.001 1101 0.001 1101 0.001 1101 0.001 1101
100 110 0100 0,110 0100 0,110 0100 0,110 0100
-87 -101 0111 1,101 0111 1,010 1000 1,010 1001

5.已知 [ x ] 补 [x]_补 [x],求 [ x ] 原 [x]_原 [x] x x x

[ x ] 补 = 1.1100 ; [ x ] 补 = 1.1001 ; [ x ] 补 = 0.1110 ; [ x ] 补 = 1.0000 ; [x]_补=1.1100;[x]_补=1.1001;[x]_补=0.1110;[x]_补=1.0000; [x]=1.1100[x]=1.1001[x]=0.1110[x]=1.0000
[ x ] 补 = 1 , 0101 ; [ x ] 补 = 1 , 1100 ; [ x ] 补 = 0 , 0111 ; [ x ] 补 = 1 , 0000 。 [x]_补=1,0101;[x]_补=1,1100;[x]_补=0,0111;[x]_补=1,0000。 [x]=1,0101[x]=1,1100[x]=0,0111[x]=1,0000
答:
[ x ] 补 [x]_补 [x] [ x ] 原 [x]_原 [x] x x x的对应关系如下:

[ x ] 补 [x]_补 [x] [ x ] 原 [x]_原 [x] x x x(二进制) x x x(十进制)
1.1100 1.0100 -0.0100 -1/4
1.1001 1.0111 -0.0111 -7/16
0.1110 0.1110 +0.1110 +7/8
1.0000 -1.0000 -1
1,0101 1,1011 -1011 -11
1,1100 1,0100 -0100 -4
0,0111 0,0111 +0111 +7
1,0000 -10000 -16

6.设机器数字长为8位(含1位符号位在内),分整数和小数两种情况讨论真值x为何值时, [ x ] 补 = [ x ] 原 [x]_补=[x]_原 [x]=[x]成立。

答:
当 x 为小数时, 若 x ≥ 0 ,则 [ x ] 补 = [ x ] 原 成立; 当 x < 0 ,则当 x = − 1 / 2 时, [ x ] 补 = [ x ] 原 成立。 当 x 为整数时, 若 x ≥ 0 ,则 [ x ] 补 = [ x ] 原 成立; 当 x < 0 ,则当 x = − 64 时, [ x ] 补 = [ x ] 原 成立。 当x为小数时,\\ 若x\geq 0,则[x]_补=[x]_原成立;\\ 当x<0,则当x=-1/2时,[x]_补=[x]_原成立。\\ 当x为整数时,\\ 若x\geq 0,则[x]_补=[x]_原成立;\\ 当x<0,则当x=-64时,[x]_补=[x]_原成立。 x为小数时,x0,则[x]=[x]成立;x<0,则当x=1/2时,[x]=[x]成立。x为整数时,x0,则[x]=[x]成立;x<0,则当x=64时,[x]=[x]成立。

7.设 x x x为真值, x ∗ x^* x为绝对值,说明 [ − x ∗ ] 补 = [ − x ] 补 [-x^*]_补=[-x]_补 [x]=[x]能否成立。

答:
当 x 为真值, x ∗ 为绝对值时, [ − x ∗ ] 补 = [ − x ] 补 不能成立。 当x为真值,x^*为绝对值时,[-x^*]_补=[-x]_补不能成立。 x为真值,x为绝对值时,[x]=[x]不能成立。
[ − x ∗ ] 补 = [ − x ] 补 的结论只有在 x > 0 时成立。 [-x^*]_补=[-x]_补的结论只有在x>0时成立。 [x]=[x]的结论只有在x>0时成立。
当 x < 0 时,由于 [ − x ∗ ] 补 是一个负值,而 [ − x ] 补 是一个正值,因此此时 [ − x ∗ ] 补 不等于 [ − x ] 补 。 当x<0时,由于[-x^*]_补是一个负值,而[-x]_补是一个正值,因此此时[-x^*]_补不等于[-x]_补。 x<0时,由于[x]是一个负值,而[x]是一个正值,因此此时[x]不等于[x]

8.讨论 [ x ] 补 > [ y ] 补 [x]_补>[y]_补 [x]>[y],是否有 x > y x>y x>y

答:
若 [ x ] 补 > [ y ] 补 ,不一定有 x > y 。 若[x]_补>[y]_补,不一定有x>y 。 [x]>[y],不一定有x>y
[ x ] 补 > [ y ] 补 时, x > y 的结论只在 x > 0 、 y > 0 ,以及 x < 0 、 y < 0 时成立。 [x]_补>[y]_补时,x>y的结论只在x>0、y>0,以及x<0、y<0时成立。 [x]>[y]时,x>y的结论只在x>0y>0,以及x<0y<0时成立。
当时 x > 0 、 y < 0 ,有 x > y ,但由于负数补码的符号位为 1 ,则 [ x ] 补 < [ y ] 补 。 当时x>0、y<0,有x>y,但由于负数补码的符号位为1,则[x]_补<[y]_补。 当时x>0y<0,有x>y,但由于负数补码的符号位为1,则[x]<[y]
同样,当时 x < 0 、 y > 0 ,有 x < y ,但 [ x ] 补 > [ y ] 补 。 同样,当时x<0、y>0,有x<y,但[x]_补>[y]_补。 同样,当时x<0y>0,有x<y,但[x]>[y]
注意:
(1)绝对值小的负数其值反而大,且负数的绝对值越小,其补码值越大。因此,当x<0、y<0时,若 [ x ] 补 > [ y ] 补 [x]_补>[y]_补 [x]>[y],必有x>y 。
(2)补码的符号位和数值位为一体,不可分开分析。
(3)完整的答案应分四种情况分析,但也可通过充分分析一种不成立的情况获得正确答案。
(4)由于补码0的符号位为0,因此x、y=0可归纳到>0的一类情况讨论。

9.当十六进制数9B和FF分别表示为原码、补码、反码、移码和无符号数时,所对应的十进制数各为多少(设机器数采用一位符号位)?

答:
真值和机器数的对应关系如下:

十六进制 真值 无符号数 原码 反码 补码 移码
9BH 二进制 1001 1011 1,001 1011 1,110 0100 1,110 0101 0,001 1011
9BH 十进制 155 -27 -100 -101 27
FFH 二进制 1111 1111 1,111 1111 1,000 0000 1,000 0001 0,111 1111
FFH 十进制 255 -127 -0 -1 127

注意:
(1)9BH、FFH为机器数,本身含符号位。
(2)移码符号位与原、补、反码相反,数值同补码。

10.在整数定点机中,设机器数采用一位符号位,写出 ± 0 \pm0 ±0的原码、补码、反码和移码,得出什么结论?

答:
0的机器数形式如下:

真值 原码 补码 反码 移码
+0 0,00…0 0,00…0 0,00…0 1,00…0
-0 1,00…0 0,00…0 1,11…1 1,00…0

结论:补、移码0的表示不唯一,原、反码不唯一。

11.已知机器数字长为4位(其中1位为符号位),写出整数定点机和小数定点机中原码、补码和反码的全部形式,并注明其对应的十进制真值。

答:
机器数与对应的真是形式如下:

真值(二进制) 真值(十进制) 原码 反码 补码
整数 +111 +7 0,111 0,111 0,111
整数 +110 +6 0,110 0,110 0,110
整数 +101 +5 0,101 0,101 0,101
整数 +100 +4 0,100 0,100 0,100
整数 +011 +3 0,011 0,011 0,011
整数 +010 +2 0,010 0,010 0,010
整数 +001 +1 0,001 0,001 0,001
整数 +000 +0 0,000 0,000 0,000
整数 -1000 -8 1,000
整数 -111 -7 1,111 1,000 1,001
整数 -110 -6 1,110 1,001 1,010
整数 -101 -5 1,101 1,010 1,011
整数 -100 -4 1,100 1,011 1,100
整数 -011 -3 1,011 1,100 1,101
整数 -010 -2 1,010 1,101 1,110
整数 -001 -1 1,001 1,110 1,111
整数 -000 -0 1,000 1,111 0,000
小数 +0.111 +7/8 0.111 0.111 0.111
小数 +0.110 +6/8 0.110 0.110 0.110
小数 +0.101 +5/8 0.101 0.101 0.101
小数 +0.100 +4/8 0.100 0.100 0.100
小数 +0.011 +3/8 0.011 0.011 0.011
小数 +0.010 +2/8 0.010 0.010 0.010
小数 +0.001 +1/8 0.001 0.001 0.001
小数 +0.000 +0 0.000 0.000 0.000
小数 -1.000 -1 1.000
小数 -0.111 -7/8 1.111 1.000 1.001
小数 -0.110 -6/8 1.110 1.001 1.010
小数 -0.101 -5/8 1.101 1.010 1.011
小数 -0.100 -4/8 1.100 1.011 1.100
小数 -0.011 -3/8 1.011 1.100 1.101
小数 -0.010 -2/8 1.010 1.101 1.110
小数 -0.001 -1/8 1.001 1.110 1.111
小数 -0.000 -0 1.000 1.111 0.000

12.设浮点数格式为:阶码5位(含1位阶符),尾数11位(含1位数符)。写出51/128、-27/1024、7.375、-86.5所对应的机器数。要求如下:

(1)阶码和尾数均为原码;
(2)阶码和尾数均为补码;
(3)阶码为移码,尾数为补码。
答:
据题意画出该浮点数的格式:
在这里插入图片描述
注意:1)正数补码不“取反+1” 。 2)机器数末位为0的不能省。
将十进制数转换为二进制:
x 1 = 51 / 128 = ( 0.011   0011 ) 2 = 2 − 1 × ( 0.11   0011 ) 2 x 2 = − 27 / 1027 = ( − 0.00   0001   1011 ) 2 = 2 − 5 × ( − 0.1   1011 ) 2 x 3 = 7.375 = ( 111.011 ) 2 = 2 3 × ( 0.11   1011 ) 2 x 4 = − 86.5 = ( − 1010   110.1 ) 2 = 2 7 × ( − 0.1010   1101 ) 2 x_1=51/128=(0.011\ 0011)_2=2^{-1}\times(0.11\ 0011)_2 \\ x_2=-27/1027=(-0.00\ 0001\ 1011)_2=2^{-5}\times(-0.1\ 1011)_2 \\ x_3=7.375=(111.011)_2=2^3\times(0.11\ 1011)_2 \\ x_4=-86.5=(-1010\ 110.1)_2=2^7\times (-0.1010\ 1101)_2 x1=51/128=(0.011 0011)2=21×(0.11 0011)2x2=27/1027=(0.00 0001 1011)2=25×(0.1 1011)2x3=7.375=(111.011)2=23×(0.11 1011)2x4=86.5=(1010 110.1)2=27×(0.1010 1101)2
则以上各数的浮点规格化数为:
(1)
[ x 1 ] 浮 = 1 , 0001 ; 0.11   0011   0000 [x_1]_浮=1,0001;0.11\ 0 011\ 000 0 [x1]=1,00010.11 0011 0000
[ x 2 ] 浮 = 1 , 0101 ; 1.11   0110   0000 [x_2]_浮=1,0101;1.11\ 0 110\ 000 0 [x2]=1,01011.11 0110 0000
[ x 3 ] 浮 = 0 , 0011 ; 0.11   1011   0000 [x_3]_浮=0,0011;0.11\ 1 011\ 000 0 [x3]=0,00110.11 1011 0000
[ x 4 ] 浮 = 0 , 0111 ; 1.10   1011   0100 [x_4]_浮=0,0111;1.10\ 1 011\ 010 0 [x4]=0,01111.10 1011 0100
(2)
[ x 1 ] 浮 = 1 , 1111 ; 0.11   0011   0000 [x_1]_浮=1,1111;0.11\ 0 011\ 000 0 [x1]=1,11110.11 0011 0000
[ x 2 ] 浮 = 1 , 1011 ; 1.00   1010   0000 [x_2]_浮=1,1011;1.00\ 1 010\ 000 0 [x2]=1,10111.00 1010 0000
[ x 3 ] 浮 = 0 , 0011 ; 0.11   1011   0000 [x_3]_浮=0,0011;0.11\ 1 011\ 000 0 [x3]=0,00110.11 1011 0000
[ x 4 ] 浮 = 0 , 0111 ; 1.01   0100   1100 [x_4]_浮=0,0111;1.01\ 0 100\ 110 0 [x4]=0,01111.01 0100 1100
(3)
[ x 1 ] 浮 = 0 , 1111 ; 0.11   0011   0000 [x_1]_浮=0,1111;0.11\ 0 011\ 000 0 [x1]=0,11110.11 0011 0000
[ x 2 ] 浮 = 0 , 1011 ; 1.00   1010   0000 [x_2]_浮=0,1011;1.00\ 1 010\ 000 0 [x2]=0,10111.00 1010 0000
[ x 3 ] 浮 = 1 , 0011 ; 0.11   1011   0000 [x_3]_浮=1,0011;0.11\ 1 011\ 000 0 [x3]=1,00110.11 1011 0000
[ x 4 ] 浮 = 1 , 0111 ; 1.01   0100   1100 [x_4]_浮=1,0111;1.01\ 0 100\ 110 0 [x4]=1,01111.01 0100 1100

13.浮点数格式同上题,当阶码基值分别取2和16时,

(1)说明2和16在浮点数中如何表示。
(2)基值不同对浮点数什么有影响?
(3)当阶码和尾数均用补码表示,且尾数采用规格化形式,给出两种情况下所能表示的最大正数和非零最小正数真值。
答:
(1)阶码基值不论取何值,在浮点数中均为隐含表示,即:2和16不出现在浮点格式中,仅为人为的约定。

(2)当基值不同时,对数的表示范围和精度都有影响。即:在浮点格式不变的情况下,基越大,可表示的浮点数范围越大,但精度越下降。

(3)r=2时,最大正数的浮点格式为:0,1111;0.111 111 111 1
其真值为: N + m a x = 2 15 × ( 1 − 2 − 10 ) N_{+max}=2^{15}\times(1-2^{-10}) N+max=215×(1210)
非零最小规格化正数浮点格式为:1,0000;0.100 000 000 0
其真值为: N + m i n = 2 − 16 × 2 − 1 = 2 − 17 N_{+min}=2^{-16}\times 2^{-1}=2^{-17} N+min=216×21=217
r=16时,最大正数的浮点格式为:0,1111;0.1111 1111 11
其真值为: N + m a x = 1 6 15 × ( 1 − 2 − 10 ) N_{+max}=16^{15}\times(1-2^{-10}) N+max=1615×(1210)
非零最小规格化正数浮点格式为:1,0000;0.0001 0000 00
其真值为: N + m i n = 1 6 − 16 × 1 6 − 1 = 1 6 − 17 N_{+min}=16^{-16}\times 16^{-1}=16^{-17} N+min=1616×161=1617

14.设浮点数字长为32位,欲表示 ± 6 \pm 6 ±6万间的十进制数,在保证数的最大精度条件下,除阶符、数符各取一位外,阶码和尾数各取几位?按这样分配,该浮点数溢出的条件是什么?

答:
若要保证数的最大精度,应取阶的基=2。
若要表示 ± 6 \pm 6 ±6万间的十进制数,由于 32768 ( 2 15 ) < 6 万 < 65536 ( 2 16 ) 32768(2^{15})<6万<65536(2^{16}) 32768(215)<6<65536(216),则:阶码除阶符外还应取5位(向上取2的幂)。
故:尾数位数=32-1-1-5=25位
按此格式,该浮点数上溢的条件为:阶码 ≥ 32 \geq 32 32该浮点数格式如下:
在这里插入图片描述

15.什么是机器零?若要求全0表示机器零,浮点数的阶码和尾数应采取什么机器数形式?

答:
机器零指机器数所表示的零的形式,它与真值零的区别是:机器零在数轴上表示为“0”点及其附近的一段区域,即在计算机中小到机器数的精度达不到的数均视为“机器零”,而真零对应数轴上的一点(0点)。若要求用“全0”表示浮点机器零,则浮点数的阶码应用移码、尾数用补码表示(此时阶码为最小阶、尾数为零,而移码的最小码值正好为“0”,补码的零的形式也为“0”,拼起来正好为一串0的形式)。

16.设机器数字长为16位,写出下列各种情况下它能表示的数的范围。设机器数采用一位符号位,答案均用十进制表示。

(1)无符号数;
(2)原码表示的定点小数;
(3)补码表示的定点小数;
(4)补码表示的定点整数;
(5)原码表示的定点整数;
(6)浮点数的格式为:阶码6位(含1位阶符),尾数10位(含1位数符)。分别写出正数和负数的表示范围;
(注:加条件:阶原尾原非规格化数。)
(7)浮点数格式同(6),机器数采用补码规格化形式,分别写出其对应的正数和负数的真值范围。
答:
各种表示方法数据范围如下:
(1)无符号整数: 0 ∽ 2 16 − 1 0\backsim 2^{16}- 1 02161,即: 0 ∽ 65535 0\backsim 65535 065535;

(2)原码定点小数: − ( 1 − 2 − 15 ) ∽ 1 − 2 − 15 -(1-2^{-15})\backsim 1-2^{-15} (1215)1215

(3)补码定点小数: − 1 ∽ 1 − 2 − 15 -1\backsim 1-2^{-15} 11215

(4)补码定点整数: − 2 15 ∽ 2 15 − 1 -2^{15}\backsim 2^{15}-1 2152151,即: − 32767 ∽ 32768 -32767\backsim 32768 3276732768;

(5)原码定点整数: − ( 2 15 − 1 ) ∽ 2 15 − 1 -(2^{15}-1)\backsim 2^{15}-1 (2151)2151,即: − 32767 ∽ 32767 -32767\backsim 32767 3276732767;

(6)据题意画出该浮点数格式:
在这里插入图片描述
由于题意中未指定该浮点数所采用的码制,则不同的假设前提会导致不同的答案,示意如下:
1)当采用阶原尾原非规格化数时,最大正数=0,11 111;0.111 111 111最小正数=1,11 111;0.000 000 001
则正数表示范围为: 2 31 × ( 1 − 2 − 9 ) ∽ 2 − 31 × 2 − 9 2^{31}\times (1-2^{-9})\backsim 2^{-31}\times 2^{-9} 231×(129)231×29
最大负数=1,11 111;1.000 000 001
最小负数=0,11 111; 1.111 111 111
则负数表示范围为: 2 − 31 × ( − 2 − 9 ) ∽ − 2 31 × ( 1 − 2 − 9 ) 2^{-31}\times (-2^{-9})\backsim -2^{31}\times(1-2^{-9}) 231×(29)231×(129)
2)当采用阶移尾原非规格化数时,
正数表示范围为:
2 31 × ( 1 − 2 − 9 ) ∽ 2 − 32 × 2 − 9 2^{31}\times(1-2^{-9})\backsim 2^{-32}\times 2^{-9} 231×(129)232×29
负数表示范围为:
2 − 32 × ( − 2 − 9 ) ∽ − 2 31 × ( 1 − 2 − 9 ) 2^{-32}\times (-2^{-9})\backsim -2^{31}\times(1-2^{-9}) 232×(29)231×(129)
注:零视为中性数,不在此范围内。

(7)当机器数采用补码规格化形式时,若不考虑隐藏位,则
最大正数=0,11 111;0.111 111 111
最小正数=1,00 000;0.100 000 000
其对应的正数真值范围为: 2 31 × ( 1 − 2 − 9 ) ∽ 2 − 32 × 2 − 1 2^{31}\times(1-2^{-9}) \backsim 2^{-32}\times 2^{-1} 231×(129)232×21
最大负数=1,00 000;1.011 111 111
最小负数=0,11 111;1.000 000 000
其对应的负数真值范围为: − 2 − 32 × ( 2 − 1 + 2 − 9 ) ∽ 2 31 × ( − 1 ) -2^{-32}\times(2^{-1}+2^{-9})\backsim 2^{31}\times (-1) 232×(21+29)231×(1)
注意:
1)应写出可表示范围的上、下限精确值(用 ≥ 或 ≤ \geq 或\leq ,不要用>或<)。
2)应用十进制2的幂形式分阶、尾两部分表示,这样可反映出浮点数的格式特点。括号不要乘开,不要用十进制小数表示,不直观、不精确且无意义。
3)原码正、负域对称,补码正、负域不对称,浮点数阶、尾也如此。特别要注意浮点负数补码规格化范围。(满足条件: 数符 ⊕ M S B 位 = 1 数符\oplus MSB位=1 数符MSB=1)

猜你喜欢

转载自blog.csdn.net/weixin_45735391/article/details/127178676