答:
五位长的十进制正整数中,最大的数99999满足条件: 2 16 ( = 65536 ) < 99999 < 2 17 ( = 131072 ) 2^{16}(=65536)<99999<2^{17}(=131072) 216(=65536)<99999<217(=131072),故最少用17位二进制数即可表示任一五位长的十进制正整数。
( 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)X≥81;(3)41≥X>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=1,a2∽a6不全为0即可(a2 or a3 or a4 or a5 or a6=1);(2)若要X≥1/8,只要a1∽a3不全为0即可(a1 or a2 or a3=1),a4∽a6可任取0或1;(3)若要1/4≥X>1/16,只要a1=0,a2可任取0或1;当a2=0时,若a3=0,则必须a4=1,且a5、a6不全为0(a5 or a6=1);若a3=1,则a4∽a6可任取0或1;当a2=1时,a3∽a6取0。
答:
若要 x < − 16 ,需 x 1 = 0 , x 2 ∽ x 5 任意。 若要x<-16,需x_1=0,x_2\backsim x_5任意。 若要x<−16,需x1=0,x2∽x5任意。
(注:负数绝对值大的反而小。)
− 13 64 , 29 128 , 100 , − 87 -\frac{13}{64},\frac{29}{128},100,-87 −6413,12829,100,−87
答:
真值与不同机器码对应关系如下:
真值(十进制) | 真值(二进制) | 原码 | 反码 | 补码 |
---|---|---|---|---|
-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 |
[ 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 |
答:
当 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为小数时,若x≥0,则[x]补=[x]原成立;当x<0,则当x=−1/2时,[x]补=[x]原成立。当x为整数时,若x≥0,则[x]补=[x]原成立;当x<0,则当x=−64时,[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]补。
答:
若 [ 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>0、y>0,以及x<0、y<0时成立。
当时 x > 0 、 y < 0 ,有 x > y ,但由于负数补码的符号位为 1 ,则 [ x ] 补 < [ y ] 补 。 当时x>0、y<0,有x>y,但由于负数补码的符号位为1,则[x]_补<[y]_补。 当时x>0、y<0,有x>y,但由于负数补码的符号位为1,则[x]补<[y]补。
同样,当时 x < 0 、 y > 0 ,有 x < y ,但 [ x ] 补 > [ y ] 补 。 同样,当时x<0、y>0,有x
注意:
(1)绝对值小的负数其值反而大,且负数的绝对值越小,其补码值越大。因此,当x<0、y<0时,若 [ x ] 补 > [ y ] 补 [x]_补>[y]_补 [x]补>[y]补,必有x>y 。
(2)补码的符号位和数值位为一体,不可分开分析。
(3)完整的答案应分四种情况分析,但也可通过充分分析一种不成立的情况获得正确答案。
(4)由于补码0的符号位为0,因此x、y=0可归纳到>0的一类情况讨论。
答:
真值和机器数的对应关系如下:
十六进制 | 真值 | 无符号数 | 原码 | 反码 | 补码 | 移码 |
---|---|---|---|---|---|---|
9BH | 二进制 | 1001 1011 | 1,001 1011 | 1,110 0100 | 1,110 0101 | 0,110 0101 |
9BH | 十进制 | 155 | -27 | -100 | -101 | 101 |
FFH | 二进制 | 1111 1111 | 1,111 1111 | 1,000 0000 | 1,000 0001 | 0,000 0001 |
FFH | 十进制 | 255 | -127 | -0 | -1 | 1 |
注意:
(1)9BH、FFH为机器数,本身含符号位。
(2)移码符号位与原、补、反码相反,数值同补码。
答:
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的表示不唯一,原、反码不唯一。
答:
机器数与对应的真是形式如下:
真值(二进制) | 真值(十进制) | 原码 | 反码 | 补码 | |
---|---|---|---|---|---|
整数 |
+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 |
(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=2−1×(0.11 0011)2x2=−27/1027=(−0.00 0001 1011)2=2−5×(−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,0001;0.11 0011 0000
[ x 2 ] 浮 = 1 , 0101 ; 1.11 0110 0000 [x_2]_浮=1,0101;1.11\ 0 110\ 000 0 [x2]浮=1,0101;1.11 0110 0000
[ x 3 ] 浮 = 0 , 0011 ; 0.11 1011 0000 [x_3]_浮=0,0011;0.11\ 1 011\ 000 0 [x3]浮=0,0011;0.11 1011 0000
[ x 4 ] 浮 = 0 , 0111 ; 1.10 1011 0100 [x_4]_浮=0,0111;1.10\ 1 011\ 010 0 [x4]浮=0,0111;1.10 1011 0100
(2)
[ x 1 ] 浮 = 1 , 1111 ; 0.11 0011 0000 [x_1]_浮=1,1111;0.11\ 0 011\ 000 0 [x1]浮=1,1111;0.11 0011 0000
[ x 2 ] 浮 = 1 , 1011 ; 1.00 1010 0000 [x_2]_浮=1,1011;1.00\ 1 010\ 000 0 [x2]浮=1,1011;1.00 1010 0000
[ x 3 ] 浮 = 0 , 0011 ; 0.11 1011 0000 [x_3]_浮=0,0011;0.11\ 1 011\ 000 0 [x3]浮=0,0011;0.11 1011 0000
[ x 4 ] 浮 = 0 , 0111 ; 1.01 0100 1100 [x_4]_浮=0,0111;1.01\ 0 100\ 110 0 [x4]浮=0,0111;1.01 0100 1100
(3)
[ x 1 ] 浮 = 0 , 1111 ; 0.11 0011 0000 [x_1]_浮=0,1111;0.11\ 0 011\ 000 0 [x1]浮=0,1111;0.11 0011 0000
[ x 2 ] 浮 = 0 , 1011 ; 1.00 1010 0000 [x_2]_浮=0,1011;1.00\ 1 010\ 000 0 [x2]浮=0,1011;1.00 1010 0000
[ x 3 ] 浮 = 1 , 0011 ; 0.11 1011 0000 [x_3]_浮=1,0011;0.11\ 1 011\ 000 0 [x3]浮=1,0011;0.11 1011 0000
[ x 4 ] 浮 = 1 , 0111 ; 1.01 0100 1100 [x_4]_浮=1,0111;1.01\ 0 100\ 110 0 [x4]浮=1,0111;1.01 0100 1100
(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×(1−2−10)
非零最小规格化正数浮点格式为: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=2−16×2−1=2−17
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×(1−2−10)
非零最小规格化正数浮点格式为: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=16−16×16−1=16−17
答:
若要保证数的最大精度,应取阶的基=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该浮点数格式如下:
答:
机器零指机器数所表示的零的形式,它与真值零的区别是:机器零在数轴上表示为“0”点及其附近的一段区域,即在计算机中小到机器数的精度达不到的数均视为“机器零”,而真零对应数轴上的一点(0点)。若要求用“全0”表示浮点机器零,则浮点数的阶码应用移码、尾数用补码表示(此时阶码为最小阶、尾数为零,而移码的最小码值正好为“0”,补码的零的形式也为“0”,拼起来正好为一串0的形式)。
(1)无符号数;
(2)原码表示的定点小数;
(3)补码表示的定点小数;
(4)补码表示的定点整数;
(5)原码表示的定点整数;
(6)浮点数的格式为:阶码6位(含1位阶符),尾数10位(含1位数符)。分别写出正数和负数的表示范围;
(注:加条件:阶原尾原非规格化数。)
(7)浮点数格式同(6),机器数采用补码规格化形式,分别写出其对应的正数和负数的真值范围。
答:
各种表示方法数据范围如下:
(1)无符号整数: 0 ∽ 2 16 − 1 0\backsim 2^{16}- 1 0∽216−1,即: 0 ∽ 65535 0\backsim 65535 0∽65535;
(2)原码定点小数: − ( 1 − 2 − 15 ) ∽ 1 − 2 − 15 -(1-2^{-15})\backsim 1-2^{-15} −(1−2−15)∽1−2−15
(3)补码定点小数: − 1 ∽ 1 − 2 − 15 -1\backsim 1-2^{-15} −1∽1−2−15
(4)补码定点整数: − 2 15 ∽ 2 15 − 1 -2^{15}\backsim 2^{15}-1 −215∽215−1,即: − 32767 ∽ 32768 -32767\backsim 32768 −32767∽32768;
(5)原码定点整数: − ( 2 15 − 1 ) ∽ 2 15 − 1 -(2^{15}-1)\backsim 2^{15}-1 −(215−1)∽215−1,即: − 32767 ∽ 32767 -32767\backsim 32767 −32767∽32767;
(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×(1−2−9)∽2−31×2−9
最大负数=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}) 2−31×(−2−9)∽−231×(1−2−9)
2)当采用阶移尾原非规格化数时,
正数表示范围为:
2 31 × ( 1 − 2 − 9 ) ∽ 2 − 32 × 2 − 9 2^{31}\times(1-2^{-9})\backsim 2^{-32}\times 2^{-9} 231×(1−2−9)∽2−32×2−9
负数表示范围为:
2 − 32 × ( − 2 − 9 ) ∽ − 2 31 × ( 1 − 2 − 9 ) 2^{-32}\times (-2^{-9})\backsim -2^{31}\times(1-2^{-9}) 2−32×(−2−9)∽−231×(1−2−9)
注:零视为中性数,不在此范围内。
(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×(1−2−9)∽2−32×2−1
最大负数=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) −2−32×(2−1+2−9)∽231×(−1)
注意:
1)应写出可表示范围的上、下限精确值(用 ≥ 或 ≤ \geq 或\leq ≥或≤,不要用>或<)。
2)应用十进制2的幂形式分阶、尾两部分表示,这样可反映出浮点数的格式特点。括号不要乘开,不要用十进制小数表示,不直观、不精确且无意义。
3)原码正、负域对称,补码正、负域不对称,浮点数阶、尾也如此。特别要注意浮点负数补码规格化范围。(满足条件: 数符 ⊕ M S B 位 = 1 数符\oplus MSB位=1 数符⊕MSB位=1)