第一章 数制和码制 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位即可。两数的补码相加 结果为