目录

第六章

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 11011.001 10101.110 01011.110 0110
29/1280.001 11010.001 11010.001 11010.001 1101
100110 01000,110 01000,110 01000,110 0100
-87-101 01111,101 01111,010 10001,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.11001.0100-0.0100-1/4
1.10011.0111-0.0111-7/16
0.11100.1110+0.1110+7/8
1.0000-1.0000-1
1,01011,1011-1011-11
1,11001,0100-0100-4
0,01110,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 10111,001 10111,110 01001,110 01010,001 1011
9BH十进制155-27-100-10127
FFH二进制1111 11111,111 11111,000 00001,000 00010,111 1111
FFH十进制255-127-0-1127

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

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

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

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

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

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

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

真值(二进制)真值(十进制)原码反码补码
整数+111+70,1110,1110,111
整数+110+60,1100,1100,110
整数+101+50,1010,1010,101
整数+100+40,1000,1000,100
整数+011+30,0110,0110,011
整数+010+20,0100,0100,010
整数+001+10,0010,0010,001
整数+000+00,0000,0000,000
整数-1000-81,000
整数-111-71,1111,0001,001
整数-110-61,1101,0011,010
整数-101-51,1011,0101,011
整数-100-41,1001,0111,100
整数-011-31,0111,1001,101
整数-010-21,0101,1011,110
整数-001-11,0011,1101,111
整数-000-01,0001,1110,000
小数+0.111+7/80.1110.1110.111
小数+0.110+6/80.1100.1100.110
小数+0.101+5/80.1010.1010.101
小数+0.100+4/80.1000.1000.100
小数+0.011+3/80.0110.0110.011
小数+0.010+2/80.0100.0100.010
小数+0.001+1/80.0010.0010.001
小数+0.000+00.0000.0000.000
小数-1.000-11.000
小数-0.111-7/81.1111.0001.001
小数-0.110-6/81.1101.0011.010
小数-0.101-5/81.1011.0101.011
小数-0.100-4/81.1001.0111.100
小数-0.011-3/81.0111.1001.101
小数-0.010-2/81.0101.1011.110
小数-0.001-1/81.0011.1101.111
小数-0.000-01.0001.1110.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)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐