计算机的运算方法第六章1.最少用几位二进制数即可表示任一五位长的十进制正整数?解:五位长的十进制正整数中,最大的数99999满足条件:216(=65536)99999217(=131072),故最少用17位二进制数即可表示任一五位长的十进制正整数。92.已知X=0.a1a2a3a4a5a6(ai为0或1),讨论下列几种情况时ai各取何值。(1)X1/2;(2)X1/8;(3)1/4X1/16解:(1)若要X1/2,只要a1=1,a2~a6不全为0即可(a2ora3ora4ora5ora6=1);(2)若要X1/8,只要a1~a3不全为0即可(a1ora2ora3=1),a4~a6可任取0或1;(3)若要1/4X1/16,只要a1=0,a2可任取0或1;当a2=0时,若a3=0,则必须a4=1,且a5、a6不全为0(a5ora6=1;若a3=1,则a4~a6可任取0或1;当a2=1时,a3~a6可任取0或1。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-0.0011011.00110101.11001011.110011029/1280.00111010.00111010.00111010.001110110011001000,11001000,11001000,1100100-87-10101111,10101111,01010001,01010015.已知[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]补[x]原x(二进制)x(十进制)1.11001.0100-0.0100-1/41.10011.0111-0.0111-7/160.11100.1110+0.1110+7/81.0000无-1.0000-11,01011,1011-1011-111,11001,0100-0100-40,01110,0111+0111+71,0000无-10000-166.设机器数字长为8位(含1位符号位在内),分整数和小数两种情况讨论真值x为何值时,[x]补=[x]原成立。解:当x为小数时,若x0,则[x]补=[x]原成立;若x0,则当x=-1/2时,[x]补=[x]原成立。当x为整数时,若x0,则[x]补=[x]原成立;若x0,则当x=-64时,[x]补=[x]原成立。7.设x为真值,x*为绝对值,说明[-x*]补=[-x]补能否成立。解:当x为真值,x*为绝对值时,[-x*]补=[-x]补不能成立。[-x*]补=[-x]补的结论只在x0时成立。当x0时,由于[-x*]补是一个负值,而[-x]补是一个正值,因此此时[-x*]补不等于[-x]补。8.讨论若[x]补[y]补,是否有xy?解:若[x]补[y]补,不一定有xy。[x]补[y]补时xy的结论只在x0、y0,及x0、y0时成立。当x0、y0时,有xy,但由于负数补码的符号位为1,则[x]补[y]补。同样,当x0、y0时,有xy,但[x]补[y]补。注意:1)绝对值小的负数其值反而大,且负数的绝对值越小,其补码值越大。因此,当x0、y0时,若[x]补[y]补,必有xy。2)补码的符号位和数值位为一体,不可分开分析。3)完整的答案应分四种情况分析,但也可通过充分分析一种不成立的情况获得正确答案。4)由于补码0的符号位为0,因此x、y=0可归纳到0的一类情况讨论。9.当十六进制数9B和FF分别表示为原码、补码、反码、移码和无符号数时,所对应的十进制数各为多少(设机器数采用一位符号位)?解:真值和机器数的对应关系如下:十六进制真值无符号数原码反码补码移码9BH二进制十进制10011011155-11011-27-1100100-100-1100101-101+11011+27FFH二进制十进制11111111255-1111111-127-0000000-0-0000001-1+1111111+127注意:1)9BH、FFH为机器数,本身含符号位。2)移码符号位与原、补、反码相反,数值同补码。10.在整数定点机中,设机器数采用一位符号位,写出±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+110+101+100+011+010+001+000+7+6+5+4+3+2+1+00,1110,1100,1010,1000,0110,0100,0010,000同原码同原码续表1:真值(二进制)真值(十进制)原码反码补码整数-1000-111-110-101-100-011-010-001-000-8-7-6-5-4-3-2-1-0无1,1111,1101,1011,1001,0111,0101,0011,000无1,0001,0011,0101,0111,1001,1011,1101,1111,0001,0011,0101,0111,1001,1011,1101,1110,000续表2:真值(二进制)真值(十进制)原码反码补码小数+0.111+0.110+0.101+0.100+0.011+0.010+0.001+0.000+7/8+3/4+5/8+1/2+3/8+1/4+1/8+00.1110.1100.1010.1000.0110.0100.0010.000同原码同原码续表3:真值(二进制)真值(十进制)原码反码补码小数-1.000-0.111-0.110-0.101-0.100-0.011-0.010-0.001-0.000-1-7/8-3/4-5/8-1/2-3/8-1/4-1/8-0无1.1111.1101.1011.1001.0111.0101.0011.000无1.0001.0011.0101.0111.1001.1011.1101.1111.0001.0011.0101.0111.1001.1011.1101.1110.00012.设浮点数格式为:阶码5位(含1位阶符),尾数11位(含1位数符)。写出51/128、27/1024、7.375、-86.5所对应的机器数。要求如下:(1)阶码和尾数均为原码;(2)阶码和尾数均为补码;(3)阶码为移码,尾数为补码。(注:题意中应补充规格化数的要求。)解:据题意画出该浮点数的格式:14110阶符阶码数符尾数注意:1)正数补码不“变反+1”。2)机器数末位的0不能省。将十进制数转换为二进制:x1=51/128=(0.0110011)2=2-1(0.110011)2x2=-27/1024=(-0.0000011011)2=2-5(-0.11011)2x3=7.375=(111.011)2=23(0.111011)2x4=-86.5=(-1010110.1)2=27(-0.10101101)2则以上各数的浮点规格化数为:(1)[x1]浮=1,0001;0.1100110000(2)[x1]浮=1,1111;0.1100110000(3)[x1]浮=0,1111;0.1100110000(1)[x2]浮=1,0101;1.1101100000(2)[x2]浮=1,1011;1.0010100000(3)[x2]浮=0,1011;1.0010100000(1)[x3]浮=0,0011;0.1110110000(2)[x3]浮=0,0011;0.1110110000(3)[x3]浮=1,0011;0.1110110000(1)[x4]浮=0,0111;1.1010110100(2)[x4]浮=0,0111;1.0101001100(3)[x4]浮=1,0111;1.0101001100注:以上浮点数也可采用如下格式:11410数符阶符阶码尾数此时只要将上述答案中的数符位移到最前面即可。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-17r=16时,最大正数的浮点格式为:0,1111;0.1111111111其真值为:N+max=1615×(1-2-10)非零最小规格化正数浮点格式为:1,0000;0.0001000000其真值为:N+min=16-16×16-1=16-1714.设浮点数字长为32位,欲表示±6万间的十进制数,在保证数的最大精度条件下,除阶符、数符各取一位外,阶码和尾数各取几位?按这样分配,该浮点数溢出的条件是什么?解:若要保证数的最大精度,应取阶的基=2。若要表示±6万间的十进制数,由于32768(215)6万65536(216),则:阶码除阶符外还应取5位(向上取2的幂)。故:尾数位数=32-1-1-5=25位按此格式,该浮点数上溢的条件为:阶码32该浮点数格式如下:15125阶符阶值数符尾数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;(2)原码定点小数:1-2-15~-(1-2-15)(3)补码定点小数:1-2-15~-1(4)补码定点整数:215-1~-215,即:32767~-32768;(5)原码定点整数:215-1~-(215-1),即:32767~-32767;(