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