1.3不同数制间的转换5 1.3不同数制间的转换 一、二-十转换 将二进制数转换为等值的十进制数称为二-十转换。转换时只要将二进制 数按式(1.2.3)展开,然后将所有各项的数值按十进制数相加,就可以得到等值 的十进制数了。例如 (1011.01)2=1×23+0×22+1×2+1×2°+0×2-1+1×2- =(11.25)0 二、十一二转换 所谓十一二转换,就是将十进制数转换为等值的二进制数。 首先讨论整数的转换。 假定十进制整数为(S)o,等值的二进制数为(kk。1.k。)2,则依式 (1.2.3)可知 (S)0=k2”+k.2-1+.+k,2+k29 =2(k2+k。-22+.+k)+0 (1.3.1) 上式表明,若将(S)0除以2,则得到的商为k,2+k22+.+k,而余 数即k。 同理,可将式(1.3.1)除以2得到的商写成 k2+k。-2-2+.+k,=2(k2-2+k-28-3+.+k2)+k (1.3.2) 由式(1.3.2)不难看出,若将(S)除以2所得的商再次除以2,则所得余数即k,。 依此类推,反复将每次得到的商再除以2,就可求得二进制数的每一位了。 例如,将(173)。化为二进制数可如下进行 2173 余数=1=k 286 余数=0=k 2|43 余数=1=k2 221 余数=1=k 210 余数=0=k 215 余数=1=k 22 余数=0=k6 21 余数=1=k, 故(173)。=(10101101)20
6第一章数制和码制 其次讨论小数的转换。 若(S)是一个十进制的小数,对应的二进制小数为(0.k,k2.k。)2,则 据式(1.2.3)可知 (S)0=k-2-+k-222+.+k.2m 将上式两边同乘以2得到 2(S)。=k1+(k_22+k_2-2+.+k-2m+1)(1.3.3) 式(1.3.3)说明,将小数(S)o乘以2所得乘积的整数部分即k1。 同理,将乘积的小数部分再乘以2又可得到 2(k.221+k.22+.+k2m1)=k2+(k-32-小+.+k2m2)(1.3.4) 亦即乘积的整数部分就是k2。 依此类推,将每次乘2后所得乘积的小数部分再乘以2,便可求出二进制小 数的每一位了。 例如,将(0.8125)。化为二进制小数时可如下进行 0.8125 2 1.6250 整数部分=1=k1 0.6250 2 1.2500 整数部分=1=k.2 0.2500 + 2 0.5000 整数部分=0=k3 0.5000 + 2 1.0000整数部分=1=k. 故(0.8125)o=(0.1101)20 三、二-十六转换 将二进制数转换为等值的十六进制数称为二~十六转换。 由于4位二进制数恰好有16个状态,而把这4位二进制数看作一个整体 时,它的进位输出又正好是逢十六进一,所以只要从低位到高位将整数部分每4 位二进制数分为一组并代之以等值的十六进制数,同时从高位到低位将小数部
1.3不同数制间的转换7 分的每4位数分为一组并代之以等值的十六进制数,即可得到对应的十六进 制数。 例如,将(01011110.10110010)2化为十六进制数时可得 (01011110.10110010)2 ↓↓↓ =(5 E.B 2)16 四、十六一二转换 十六一二转换是指将十六进制数转换为等值的二进制数。转换时只需将十 六进制数的每一位用等值的4位二进制数代替就行了。 例如,将(8FA.C6)6化为二进制数时得到 (8 A C6)6 =(100011111010.11000110)2 五、八进制数与二进制数的转换 将二进制数转换为八进制数的二~八转换和将八进制数转换为二进制数的 八-二转换,在方法上与二一十六转换和十六-二转换的方法基本相同。 在将二进制数转换为八进制数时,只要将二进制数的整数部分从低位到高 位每3位分为一组并代之以等值的八进制数,同时将小数部分从高位到低位每 3位分为一组并代之以等值的八进制数就可以了。 例如,若将(011110.010111)2化为八进制数,则得到 (011110.010111)2 ↓↓↓ (36.27). 反之,若将八进制数转换为二进制数,则只要将八进制数的每一位代之以等 值的二进制数即可。例如,将(52.43)。转换为二进制数时,得到 (52.43)。 ↓↓↓↓ (101010.100011)2 六、十六进制数与十进制数的转换 在将十六进制数转换为十进制数时,可根据式(1.2.5)将各位按权展开后 相加求得。在将十进制数转换为十六进制数时,可以先转换为二进制数,然后再 将得到的二进制数转换为等值的十六进制数。这两种转换方法上面已经讲 过了
8第一章数制和码制 分分 ∽∽A∽今∽∽ 复习思考题 1.3.1在十-二转换中,整数部分的转换方法和小数部分的转换方法有何不同? R1.3.2怎样将八进制数转换为十六进制数和将十六进制数转换为八进制数? R1.3.3怎样才能将十进制数转换为八进制数? 分sA今分n∽今今∽心A心A今心心M心h,·,·d 1.4二进制算数运算 1.4.1二进制算数运算的特点 当两个二进制数码表示两个数量大小时,它们之间可以进行数值运算,这种 运算称为算术运算。二进制算术运算和十进制算术运算的规则基本相同,唯 的区别在于二进制数是“逢二进一”而不是十进制数的“逢十进一”。 例如,两个二进制数1001和0101的算术运算有 加法运算 减法运算 1001 1001 +0101 -0101 1110 0100 乘法运算 除法运算 1001 1.11. ×0101 0101)10-01 1001 0101 0000 1000 1001 0101 0000 0110 0101101 0101 0010 从上面的例子中可以看到二进制算数运算的两个特点,即二进制数的乘法 运算可以通过若干次的“被乘数(或零)左移1位”和“被乘数(或零)与部分积 相加”这两种操作完成;而二进制数的除法运算能通过若干次的“除数右移】 位”和“从被除数或余数中诚去除数”这两种操作完成
1.4二进制算数运算9 如果我们再能设法将减法操作转化为某种形式的加法操作,那么加、减、乘 除运算就全部可以用“移位”和“相加”两种操作实现了。利用上述特点能使运 算电路的结构大为简化。这也是数字电路中普遍采用二进制算数运簿的重要原 因之一。 1.4.2反码、补码和补码运算 我们已经知道,在数字电路中是用逻辑电路输出的高、低电平表示二进制数 的1和0的。那么数的正、负又如何表示呢?通常采用的方法是在二进制数的 前面增加一位符号位。符号位为0表示这个数是正数,符号位为1表示这个数 是负数。这种形式的数称为原码。 在做减法运算时,如果两个数是用原码表示的,则首先需要比较两数绝对值 的大小,然后以绝对值大的一个作为被减数、绝对值小的一个作为减数,求出差 值,并以绝对值大的一个数的符号作为差值的符号。不难看出,这个操作过程比 较麻烦,而且需要使用数值比较电路和减法运算电路。如果能用两数的补码相 加代替上述的减法运算,那么计算过程中就无需使用数值比较电路和减法运算 电路了,从而使运算器的电路结构大为简化。 为了说明补码运算的原理,我们先来讨论一个生活中常见的事例。例如,你 在5点钟的时候发现自己的手表停在10点上了,因而必须把表针拨回到5点。 由图1.4.1可以看出,这时有两种拨法:第一种拨法是往回拨5格,10-5=5,拨 回到了5点;另一种拨法是往前拨7格,10+7=17。由于表盘的最大数只有12, 超过12以后的“进位”将自动消失,于是就只剩下减去12以后的余数了,即 17-12=5,也将表针拨回到了5点。这个例子说明,10-5的减法运算可以用 10+7的加法运算代替。因为5和7相加正好等于产生进位的模数12,所以我 们称7为-5对模12的补数,也称为补码(Complement)。 11 10-5=5 10+7-125 舍弃进 7 6 图1.4.1说明补码运算原理的例子