第一章 数制和码制 1.1本章习题类型与解题方法 这一章的习题在内容上有三种主要类型:不同数制间的转换,原码、反码、补 码间的转换,二进制数的补码运算。 一、不同数制间的转换 1.将任意进制数转换为等值的十进制数 解题方法和步骤: 利用公式 D=∑k,N (1-1) 即可将任何进制的数转换为等值的十进制数。上式中的N为以【进制数表示 的计数进位的基数,:为第i位的系数,它可以是0~N中的任何一个整数。若 整数部分有n位,小数部分有m位,则i将包含从n-【到0的所有正整数和从 -1到-m的所有负整数。 对于整数部分为位、小数部分为m位的二进制数(N=2),侧得到等值的 十进制数为 D=∑k2 兰k。.21+点。22-2+.+2”+k,2-+k22+.+k2 (1-2) 其中每一位的系数k:可能是1或0。 对于整数部分为n位、小数部分为m位的八进制数(N=8),则得到等值的 十进制数为 D=∑8 =k8-1+k.28-2+.+k,8”+k81+.+k.8”(1-3)
2第·章数制和吗制 对于整数部分为n位、小数部分为n位的十六进制数(N=16),则得到等值 的十进制数为 D=∑k,16 =k。.16*-1+k。2160-2+.+k。16°+k.,161+.+k.16m (1-4) 【例1一1】将下面给出的:进制、八进制和六进制数转换为等作的十进 制数。 (1)(1101.011)2;(2)(36.27)a:(3)(4A.BD)16。 解: (1)根据式(1-2)得到 (110L.011)2=】×2+1×22+0×2+1×2°+0×21+1×22+1×23 =8+4+1+0.25+0.125=(13.375)0 (2)根据式(1-3)得到 (36.27)g=3×8+6×8+2×8-'+7×8 =24+6+0.25+0.11=(30.36)0 (3)根据式(1-4)得到 (4A.BD)6=4×16+10×16°+11×16+13×16- =64+10+0.69+0.05=(74.74)g 2.将十逃制数转换为等值的一进制数 解题方法和步骤: 若十进制数包含整数和小数,则整数部分和小数部分需按不同方法分别进 行转换。 (1)整数部分的转换 将【进制数除以2,所得余数即一进制数的。: 将上面得到的商再除以2,所得余数即二进制数的,: 将上面得到的商再除以2,所得余数即二进制数的2; 依此类推,直到所得商等于0为止,就得到了等值的二进制数。 (2)小数部分的转换 将十进制数的小数乘以2,所得乘积的整数部分即k: 将上向得到的乘积的小数部分再乘以2,所得乘积的整数部分即:,: 将上面得到的乘积的小数部分再乘以2,所得乘积的整数部分即片,: 依比类推,直到求出要求的位数为止,就得到了等值的二进制数。 【例1-2】将十进制数(273.69)转换为等值的二进制数。小数部分要 求保留4位有效数字 解:首先进行整数部分的转换
1.1本章习题类型与解题方法3 2273.余数=1=k。 2136.余数=0=k 2L68.余数=0=k2 2L34.余数=0=k 217.余数=1=k 2L8.余数=0-k 24.余数=0=k。 2L2.余数=0=k, 21.余数=1=, 0 枚整数部分等值的二进制数为(100010001)20 其次进小数部分的转换 0.69 X 2 L.38.整数部分=1=k.1 0.38 2 0.76.整数部分=0=k2 0.76 ×2 1.52.整数部分=1=k3 0.52 ×2 1.04.整数部分=1=k 于是得到小数部分的转换结果为(0.1011)2。 总的转换结果为(273.69)。=(100010001.1011)2。 3.二进制与八进制和十六进制间的万相转换 解题方法和步骤: 在将二进制数转换为八进制数时,首先将二进制数的整数部分从最低位向 高位每位划分为一组,同时将二进制数的小数部分从最高位向低位每三位划 分为一组,然后将每-·组代之以等值的八进制数,就得到了所求的转换结果。 在将二进制数转换为十六进制数时,首先将二进制数的整数部分从最低位向 高位每4位划分为一组,同时将二进制数的小数部分从最高位向低位每4位划分
4第一章数制和吗制 为一组,然后将每一组代之以等值的十六进制数,就得到了所求的转换结果。 相反地,在将八进制数转换为二进制数时,只需将八进制数的每一位代之以 等值的3位二进制数并按原来的顺序排列起来就行了。 同理,在将十六进制数转换为二进制数时,只需将十六进制数的每.位代之 以等值的4位二进制数并按原来的顺序排列起来就行了: 【例1-3】试将二进制数(10111001011.0110111)2转换为等值的八进制 和十六进制数。 解:将给定的二进制数整数部分从右到左每3位分成一组、小数部分从左到 右每3位分成组,然后将每细用等值的八进制数代替,得到等值的八进制数为 (10111001011.0110111)2 ↓↓↓↓↓↓ (2 7 13. 3 4)。 整数部分敏左边一组的10应视为010,小数部分最右边的一组1应视为 100,即不够3位时以0补足三位。 将二进制数的整数部分自右向左每4位分成一组,同时将小数部分自左向 右每4位分成一组,然后将每组代之以等值的十六进制数,则得到 (10111001011.0110111)2 (5c B. 6E)6 整数部分敏左边一组的101应视为0101,小数部分最右边一组的111应视 为1110,即不够4位时以0补足四位。 4.将十进制数转换为等值的八进制和十六进制数 转换方法和步骤: (1)首先将十进制数转换为等值的二进制数。 (2)再将得到的二进制数转换为等值的八进制和六进制数。 二、原码、反码、补码之间的转换 在数字电路中是用加在二进制数绝对值前面的符号位表示正、负数的。习 惯上用符号位的0表示正数,用符号位的1表示负数。用这种表示方法得到的 数码叫做原码。 同时还规定,正数的反码和补码与原码相同,所以正数不存在需要转换的 问题。 1.从负数的原码求反码和补码 解题方法和步骤: (1)保持符号位的1不变,将数字部分的每··位求反(1改为0,0改为1)
1.1本章习题类型与解题方法5 就得到了反码。 (2)在反码的末位上加1,即得到补码。 2.从负数的补码求原码 因为“补码的补码等于惊码”,所以将补码再求补,得到的就是原码。 【例1-4】写出二进削数+1010和-0101的原码.反码和补码。 解:+1010的原码应写成01010,反码和补码与原码相同,也是01010。 -0101的原码是10101,反码是11010,补码是11011。 三、二进制数的补码运算 在数字计算机中,为了简化运算器的电路结构,是用补码相加完成两数相减 (不同符号两个数的代数和)运算的。 解题方法和步骤: (1)将两个带符号的加数写成补码形式。 (2)将这两个补码按二进制加法相加,即得补码形式的和。 两数的符号位和来自数值部分的进位相加,所得结果就是和的符号位。 这甲需要注意两点。第一,补码相加的和仍为补码,当符号位为1时,和为 负数,这时的数值部分不是这个数的绝对值。第二,将两数写成补码时,数值部 分所取的位数必须足以表示和的最大绝对值,否恻计算结果将出现错误。 【例1-5】试用补码运算的方法计算下列各式 (1)1101+0101;(2)1110-0111;(3)0111-1110;(4)-1011-1010 (1)因两数相加之和的绝对值为10010,所以补码的数值部分至少应取5 位。加上1位符号位,补码一共为6位。于是得到两数的补码相加结果 001101 +000101 010010 和的符号位仍为0,表示和为止数(+18)。 (2)因两数符号不同,和的绝对值一定小于加数当中绝对值较大一个的绝 对值,所以补码的数值部分不需要增加位数。由此可得两数的补码相加结果 01110 +11001 00111 和的符号位为0,表示和为正数(+7): (3)同上,因两数异号,所以补码的数值部分取4位即可。两数的补码相加 结果为
6第一章数制和吗制 00111 +10010 11001 和的符号位为1,表示和为负数。 如果将和的补码再求补,则得到和的原码为10111(-7)。 (4)因两数绝对值之和为5位二进制数10101,所以补码的数值部分至少 需要用五位表小。加上一位符号位以后,补码一共为6位。由此可得到两数原 码和补码为 原码 补码 101011 110101 101010 110110 将上面的两个林码相加后得到 110101 +110110 101011 和的符号位为1,表示和为负。 如果将和的补码再求补码,就得到了和的原码为110101(-21)。 1.2习题解答 【题1.1】为了将600份文件顺序编号,如果采用二进制代码,最少需要用 儿位?如果改用八进制或小六进制代码,则最少各需要用儿位? 解:因为9位一进制代码共有2°=512个码,不够用;而10位二进制代码共 有2”=1024个码,大于600,故采用二进制代码时最少需要十位。 若将10位二进制代码转换为八进制和十六进制代码,则各需要用4位和3位 因此,如果改用八进制代码,则需要用4位;如果改用卜六进制代码,则3位就够了。 【题1.2】将下列二进制整数转换为等值的十进制数。 (1)(01101)2;(2)(10100)2;(3)(10010111)2:(4)(1101101)2 解 (1)(01101)2=0×2+1×23+1×22+0×2+1×2°=13 (2)(10100)2=1×2+0×2+1×22+0×2+0×2°=20 (3)(10010111)2=1×2'+0×2°+0x23+1×2+0×2+1×2+1×2+1×2 =151
1,2习题解答7 (4)(1101101)2=1×26+1×23+0×2+1×2+1×22+0×2'+1×29 =109 【题1.3】将下列一进制小数转换为等值的十进制数。 (1)(0.1001)2:(2)(0.0111)2;(3)(0.101101)2:(4)(0.001111)2a 解: (1)(0.1001)2=1×24+0×22+0×2-3+1×24-0.5625 (2)(0.0111)2=0×2+1×22+1×2-3+1×2-4=0.4375 (3)(0.101101)2=1×2-1+0×2-2+1×23+1×24+0×25+1×26 -0.703125 (4)(0.001111)2=0×2-+0×2-2+1×23+1×2+1×25+1×26 =0.234375 【题1.4】将下列二进制数转换为等偵的十进制数。 (1)(101.011)2;(2)(110.101)2;(3)(1111.1111)2;(4)(1001.0101)2。 解: (1)(101.011)2=1×2+0×2'+1×2°+0×21+1×22+1×2 =5.375 (2)(110.101)2=1×2+1×2'+0×2°+1×2'+0×22+1×2 =6.625 (3)(1111.1111)2=1×2'+1×22+1×2+1×2°+1×2↓+1×22+1× 23+1×2 =15.9375 (4)(1001.0101)2=1×2°+0×22+0×2+1×2°+0×2'+1×22+0× 23+1×2 =9.3125 【题1.5】将下列二进制数转换为等值的八进制数和十六进制数。 (1)(1110.0111)2:(2)(1001.1101)2:(3)(0110.1001): (4)(101100.110011)2 解: (1)将(1110.0111)2转换为八进制和卜六进制数得到 (1110.0111)2 (1110.0111)2 ↓ (001110.011100)2 (.7)6 I↓↓↓ (16.34)
8第一章数制和码制 (2)将(1001.1101):转换为八进制和十六进制数得到 (100.1101)2 (1001.1101)2 (001001.110100)2 (9.D)6 ↓↓↓↓ 11.64) (3)将(0110.1001),转换为八进制和十六进制数得到 (0110.1001)2 (0110.1001)2 (110.100100:、(6.9) ↓↓↓ (6.44). (4)将(101100.110011)2转换为八进制和十六进制数得到 (101100.110011)2 (101100.110011) (101100.110011)2 (00101100.11001100)2 ↓↓↓↓ (54.63)。(2C.CC)6 【题1,6】将下列十六进制数转换为等值的二进制数。 (1)(8C)6;(2)(3D.BE)5:(3)(8.FF)16;(4)(10.00)6 解: (1)将(8C)巾每-位十六进制数代之以等值的4位二进制数,得到 (8C)6 ↓ (10001100)2 (2)将(3D.BE)s中的每-位十六进制数代之以等值的4位二进制数 得到 (3D.BE) ↓↓↓↓ (00111101.10111110)2 (3)将(8F.FF)中的每-位六进制数代之以等值的4位二进制数,得到 (8k.FF)6 ↓↓ (10001111.11111111)2
1,2习愿解答9 (4)将(10.00)6中的每一位十六进制数代之以等值的4位二进制数,得到 (1 0.00)6 ↓ ↓ ↓ (00010000.00000000)2 【题1.7】将下列十进制数转换为等值的二进制数和十六进制数。 (1)(17)o:(2)(127)o;(3)(79);(4)(255)0。 解: (1) 2L17 .余数=1=k。 28.余数=0= 24.余数=0=k 22.余数=0= 21.余数=1=k 0 故得到(17)。=(10001)2 (10001)2=(00010001)2 =(1 1)6 (2) 21127 .余数三1三k 2163 .余数=1=名 31 食数三1三k。 2 15.余数=1=k 数出 .余数=1=k, 2L1 .余数=1=k。 0 枚得到(127)1o=(1111111)2 (1111111)2=(01111111)2 =(7 F)6 (3) 2L79 .余数=1=k。 239.余数=1=k 219.余数=1=k2 29.余数=1=k, 2L4.余数=0=k 22.余数=0= 21.余数=1=k 0
10第一章·数制和吗制 故得到(79)o=(1001111)2。 (01001111)另 ↓↓ =(4F)6 (4 2255 .余数=1= 21127 厂.余数=1= 2 63.余数=1= 2L31.余数=1=k 2L15 .余数=1=k 217.余数=1=kg 23.余数=1=k6 2L1.余数=1=k, 0 故得到(255)=(11111111)2。 (11111111)2 ↓↓ =(FF)o 【题1.8】将下列十进制数转换为等值的二进制数和十六进制数。要求二 进制数保留小数点以后8位有效数字。 (1)(0.519)o:(2)(0.251)o:(3)(0.0376);(4)(0.5128)o 解: (1) 0.519 ×2 1.038.整数部分=1=k 0.038 0.076 .整数部分=0=k2 0.076 2 0.152.整数部分=0=k.3 0.152 2 0.304 .整数部分=0=k4