第一章 数制和码制 1.1本章习题类型与解题方法 这一章的习题在内容上有三种主要类型:不同数制间的转换,原码、反码、补 码间的转换,二进制数的补码运算。 一、不同数制间的转换 1.将任意进制数转换为等值的十进制数 解题方法和步骤: 利用公式 D=∑kN (1-1) 即可将任何进制的数转换为等值的十进制数。上式中的N为以进制数表示 的计数进位的基数,k为第位的系数,它可以是0~中的任何一个整数若 整数部分有n位,小数部分有m位,则i将包含从n1到0的所有正整数和从 1到-m的所有负整数。 对于整数部分为n位、小数部分为m位的二进制数(N=2),则得到等值的 十进制数为 D=2h2 =k-12+k-2n-2+…+h2+k2-+k-22+…+km2 (1-2) 其中每一位的系数k可能是1或0。 对于整数部分为n位、小数部分为m位的八进制数(N=8),则得到等值的 十进制数为 D=∑k8 =k8-+k-28n2+…+k8+k18+…+k-8(1-3)
2第·章数制和码制 对于整数部分为n位、小数部分为m位的十六进制数(N=16),则得到等值 的十进制数为 D=∑h,I k。16-+kn216″-+…+k016+k16+…+k.16- (1-4) 【例1-1】将下面给出的进制、八进制和六进制数转换为等值的十进 制数 (1)(1101.011)2;(2)(36.27);(3)(4A.BD)1。 解: (1)根祸式(1-2)得到 (1101.011)=1×23+1×2+0×2!+1×2°+0×2-’+1×22+1×2-3 8+4+1+0.25+0.125=(13.375) (2)根据式(1-3)得到 36.27)x=3×8+6×80+2×8-+7×8 =24+6+0.25+0.11=(30.36 (3)根据式(-4)得到 (4A.BD)6=4x16+10×16°+11×161+13×16 64+10+0.69+0.05=(74.74) 2.将十进制数转换为等值的二进制数 解题方法和步骤 若十进制数包含整数和小数,则整数部分和小数部分需按不同方法分别进 行转换 (1)整数部分的转换 将进制数除以2,所得余数即二进制数的k; 将上面得到的商再除以2,所得余数即二进制数的k 将:面得到的商再除以2,所得余数即二进制数的k2; 依此类推,直到所得商等于0为止,就得到了等值的二进制数。 (2)小数部分的转换 将十进制数的小数乘以2,所得乘积的整数部分即k; 将上闻得到的乘积的小数部分再乘以2,所得乘积的整数部分即k2 将上面得到的乘积的小数部分冉乘以2,所得乘积的整数部分即k3; 依此类推,直到求出要求的位数为止,就得到了等值的二进制数。 【例1-2】将十进制数(2173.69)转换为等值的二进制数。小数部分要 求保留4位有效数字。 解:首先进行整数部分的转换
1.1木章习題类型与解题方法3 273…………余数=1=k 2|136 余数=0=k1 268 余数=0=k2 2L34………余数=0=k 2|17 ·余数=1=k 余数=0-k 余数=0=k 余数=0=k 余数=1=k8 故整数部分等值的二进制数为(1000100)20 其次进行小数部分的转换 整数部分=1=k1 0.38 0.76…………整数部分=0=k2 0.76 2 1.52 整数部分=1=k3 0.52 2 1.04……整数部分=1=k 于是得到小数部分的转换结果为(01011)2 总的转换结果为(273.69)0=(1000001)2 3.二进制与八进制和十六进制间的互相转换 解题方法和步骤 在将二进制数转换为八进制数时,首先将二进制数的整数部分从最低位向 高位每位划分为一组,同时将二进制数的小数部分从最高位向低位每三位划 分为一组,然后将每-组代之以等值的八进制数,就得到了所求的转换结果。 在将二进制数转换为十六进制数时,首先将二进制数的整数部分从最低位向 高位每4位划分为一组,同时将二进制数的小数部分从最高位向低位每4位划分
4第一章数制和码制 为一组,然后将每一组代之以等值的十六进制数,就得到∫所求的转换结果。 相反地,在将八进制数转换为二进制数时,只需将八进制数的每一位代之以 等值的3位二进制数并按原来的顺序排列起米就行了。 同理,在将十六进制数转换为二进制数时,只需将十六进制数的每一位代之 以等值的4位二进制数并按原来的顺序排列起来就行了 例1-3】试将二进制数(101110011.01011)2转换为等值的八进制 和十六进制数。 解:将给定的二进制数整数部分从右到左每3位分成一组、小数部分从左到 右每3位分成…组,然后将每组用等值的八进制数代替,得到等值的八进制数为 (1011l001011.011011 整数部分最左边一组的10应视为010,小数部分最右边的一组1应视为 100,即不够3位时以0补足三位。 将二进制数的整数部分自右向左每4位分成一组,同时将小数部分自左向 右每4位分成一组,然后将每组代之以等值的十六进制数,则得到 (10111001011.0110111)2 6E) 整数部分最左边一组的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-1119;(4)-1011-1010。 解 (1)因两数相加之和的绝对值为10010,所以补码的数值部分至少应取5 位。加上1位符号位,补码一共为6位。于是得到两数的补码相加结果 001l0 +000101 0100 和的符号位仍为0,表示和为止数(+18)。 (2)因两数符号不同,和的绝对值一定小于加数当中绝对值较大一个的绝 对值,所以补码的数值部分不需要增加位数。由此可得两数的补码柑加结果 01110 +11001 00111 和的符号位为0,丧示和为正数(+7)。 (3)同上,因两数异号,所以补码的数值部分取4位即可。两数的补码相加 结果为
6第一章数制和码制 00111 +100I0 11001 和的符号位为1,表示和为负数。 如果将和的补码再求补,则得到和的原码为10111(-7)。 (4)因两数绝对值之和为5位二进制数10101,所以补码的数值部分至少 需要用机位表小。加上一位符号位以后,补码一共为6位。由此叮得到两数原 码和补码为 原码 补码 1010l1 110101 101010 110110 将上面的两个补码相加后得到 110101 +110110 l0l11 和的符号位为1,表示和为负。 如果将和的补码再求补码,就得到了和的原码为110101(-21)。 1.2习题解答 【题1.1】为了将600份文件顺序编号,如果采用二进制代码,最少需要用 几位?如果改用八进制或|六进制代码,则最少各需要用儿位 解:因为9位二进制代码共有2”=512个码,不够用;而10位二进制代码共 有2=1024个码,大于600,故采用二进制代码时最少需要十位。 若将10位二进制代码转换为八进制和十六进制代码,则各需要用4位和3位。 因此,如果改用八进制代码,则需要用4位;如果改用卜六进制代码,则3位就够了。 【题1.2】将下列二进制整数转换为等值的十进制数。 (1)(1101)2;(2)(10100);(3)(10010111)2;(4)(1101101)2 解 (1)(01101)2=0×2+1×23+1×22+0×21+1×2°=13 (2)(10100)2=1×24+0×23+1×2+0×2+0×2=20 (3)(1001011)2=1×2+0×2°+0×25+1×2+0×2+1x22+1×2+1×2 =15J
1.2习魎解答7 4)(101101)2=1×2°+1×2+0×2+1×23+1×2+0×2+1×2 【题1.3】将下列二进制小数转换为等值的十进制数。 (1)(0.101)2;(2)(0.0111)2;(3)(0.101101)2;(4)(0.00】11)2 解 (1)(0.1001)2=1×2+0×22+0×23+1×2-0.5625 (2)(0.01112=0×2+1×22+1×2-3+1×2-4=0.4375 (3)(0.101101)2=1×2+0×22+1×23+1×24+0×23+1×26 0.703125 (4)(0.001110×2+0×22+1×23+1×22+1×23+1×26 0.234375 【题1.4】将下列二进制数转换为等值的十进制数。 (1)(101.011)2;(2)(110.101)2;(3)(1.111)2;(4)(100.0101)26 解 (1)(101011)2=1×2+0×2+1×2“+0×2+1×22+1×2 5.375 (2)(110.101)2=1×22+1×2+0×2+1×21+0×22+1×2 6.625 (3)(111111=1×21+1×22+1×2+1×2+1×21+1×22+1 2-3+1×2 =15.9375 (4)(1001.0101)2=1×23+0×2+0×21+1×20+0×2+1×2-2+0× 2-+1×2 =9.3125 【题1.5】将下列二进制数转换为等值的八进制数和十六进制数。 (1)(1110.0111)2;(2)(1001.1101)2;(3)(0110.1001)2; 4)(101100.110011)2 解 (1)将(110.011)2转换为八进制和六进制数得到 (1110.011)2 1110.111) (001l110.011100) (16.34)
8第一章数制和吗制 (2)将(1001.1101)2转换为八进制和十六进制数得到 (100l.1101)2 (1001.1101)2 (001001.110100)2 (9.D) (3)将(0110.1001)2转换为八进制和六进制数得到 (0110.1001) 0110.1001) (110.100100)3 (4)将(101100.110011)2转换为八进制和十六进制数得到 (101100.1100)2 (101100.1100I1)2 (101100.110011) (00101100.11001100)2 C 【题1.6】将下列十六进制数转换为等值的二进制数。 (1)(8C)6;(2)(3D.BE)i6;(3)(8F.FF)16;(4)(10.00)1 解 (1)将(8C)中每一位十六进制数代之以等值的4位二进制数,得到 C (10001100) (2)将(3D.BE)中的每一位十六进制数代之以等值的4位二进制数, 得到 B E 0011I101.10111110)2 (3)将(8F.FF)16中的每一位十六进制数代之以等值的4位二进制数,得到 8 F) (1000111.1111111)2
1.2习题解答 (4)将(10.00)16中的每一位十六进制数代之以等值的4位二进制数,得到 10. 0001000.0000000)2 【题1.7】将下列十进制数转换为等值的二进制数和十六进制数 (1)(17)10;(2)(127)0;(3)(79)10;(4)(255)0 解 2L17…………余数=1=k 余数=0=k 84210 余数=0=k2 2L2………余数=0=k 余数=1=k 故得到(17)0=(10001)2 (10001)2=(00010001)2 (2) 2|127 余数=1=ko 2|63… 余数=1=k1 2L31………余数=1=k2 2L15…………余数=1=k 余数=1=k4 余数=1=k3 余数=1=k6 故得到(127)0=(1112 lll)2=(0111111)2 (7F) 余数=1=k 余数=1=k 19 ……余数=1=k2 22222 942 …余数=1=k2 余数=0=k3 余数=0=k 余数=1=k
10第一章·数制和码制 故得到(79)10=(10011)2 (01001111)2 (4F) 2|255…数=1=k 2 127 ……余数=1=k1 余数=1=k2 2L31………余数=1=k 余数=1=k 余数=1=k 余数=1=k6 余数=1=k 故得到(255)0=(111 1lll11)2 (FF) 【题1.8】将下列十进制数转换为等值的二进制数和十六进制数。要求二 进制数保留小数点以后8位有效数字。 (1)(0.519)10;(2)(0.251);(3)(0.0376)0;(4)(0.5128) 解 0.519 1.038………整数部分=1=k 0.038 0.076 整数部分=0=k2 0. 076 0.152…………整数部分=0=k3 0.152 0.304……………整数部分=0=k4