Menu Close

第四节 10进制数到2进制数转

十进制可以利用整数连除法直接转换成2进制,8进制,16进制等数制,但从前面的内容介绍可以看出,只要将10进制转换成2进制后,再由2进制转换成其它进制将会变得极为方便。首先以10进制到2进制的转换原理及方法。

1. 10进制整数到2进制数的转换

首先必须明确的是,对于一个确定的数,无论用何种进制表达,其表示的数值是相同的。如10进制的(11)10与2进制的(1011)2,以及16进制的(B)16所表示的数值相同,只是表达方式不同。首先看一下如何将10进制的(11)转换成2进制。

其次,一个整数除以另一个整数,可以得到整数商和余数。对同一个整数,无论用何种进制表达,除以一个整数后所得的整数商和余数都分别相同。根据以上两条原则,对于10进制整数到2进制整数可按如下步骤进行。

(1)确定2进制位数

由于4位2进制表达范围0-15,因此可以确定用4位2进制数即可以表达10进制的11,

(2)将未知的2进制数以变量替代,如假设4位2进制数为(a3a2a1a0)2  ,其中 a3, a2,a1,a0 ∈{0,1}

(3)将假定的2进制数按权值展开,并与10进制数建立等式方程,求解2进制数的每一位,

(a3a2a1a0)2 = 11     =>     a3 x 23 + a2 x 22 +a1 x  21  + a0 = 11

(4)将等式两边分别依次除以2 , 求两边对应的余数,

 

    •   a3 x 23 + a2 x 22 +a1 x  21  + a除以2后 整数部分为 a3 x 22 + a2 x 21 +a1 x  20 , 余数为a0,  10进制11 除以2后的整数为5,余数为1,因此得:

a3 x 22 + a2 x 21 +a1 x  2=5  , a0=1   , —可见最先得到得余数a0为2进制得最低位

    • 将整数商继续除以2,得

a3 x 21 + a2 x 20  =2, a1=1

    • 继续对整数商除以2,直到商为0,得

a2=0,a3=1                                                              — 最后得到得余数a3为2进制数得最高位

 (5)得到2进制数为(a3a2a1a0)2  =(1011)2

为了说明问题,上述步骤(1)~(3)假定了2进制位数,并以整数商和余数分别相等逐步求解。 在真实计算过程中,可以直接采用步骤4 反复除以基数(2),直到整数为零,将所得余数反向拼接成2进制数,为了·计算方便可以才用竖式求解得方法。

例: 利用竖式求解10进制数44 的2进制数

%title插图%num

图1  竖式求解2进制整数数

从图1 可以清楚看出求解过程,其中22,11,5,2,1,0为整数商,求解过程直到整数商为0.  最后得到2进制为 (44)10=(K5k4k3k2k1k0)2=(101100)2

2.10进制小数到2进制数的转换

10进制小数到2进制小数的转换与整数转换不同,整数之间的转换是收敛的,但小数之间的转换不一定收敛,也就是说确定位数的10进制小数,不一定能找到有限位数的2进制小数与之对应。例如(0.3)10就找不到与之对应有限位2进制数。当然在满足一定精度的条件下,仍然可以实现10进制到2进制的转换。

  • 10进制小数到2进制数的转换的基本原理

在求2进制每位数值时,其原理仍遵循不同的数制表示的数其表达的含义相同。如假设可以以两位2进制数表示(0.5)10, 则可以建立方程(0.a-1a-2)2 =(0.5)10=0.5。 利用权值展开,

a-1 x 2-1 + a-2 x 2-2 =0.5   (1)

方程(1)两边同乘基数2, 得

a-1  + a-2 x 2-1=1 +0.0       (2)

方程两边分别由整数和小数表示 , 整数和小数部分分别对应相等,得

a-1=1                            (3)

a-2 x 2-1=0.0              (4)

将方程(4)再乘以基数2,得

a-2 =0              (5)

因此得  (0.5)10 -=(0.10)2=(0.1)2  

可见,如果不能确定具体的2进制小数位数时,可以根据精度给定2进制位数。如果在给定的有效位内收敛,则低位的2进制位为零。

  • 确定2进制小数位数

由于2进制小数的权值为2-N,因此可以根据精度计算2进制小数的位数。例如,假设要求计算后2进制数的精度为1%, 2-N <=0.01, 可求得N>=7, 因此N=7。

         因此(0.5)10=(0.1000000)2=(0.1)2  ,  2进制数无效0可以省略不写。

  • 基数连乘实现不同数制转换

10进制小数到2进制小数的转换可以采用基数连乘法,先得到的整数为高位,后依次得到的整数为低位,直到满足给定得精度为止。这里基数为2。

  • 竖式求解2进制数

例2: 利用竖式求解(0.375)10的2进制数

基数连乘法,竖式求解如图2所示

%title插图%num

图2 竖式求解2进制小数

得2进制小数为(0.375)10=(0.011)2

3. 任意10进制有理数对应得2进制数求解

将10进制整数部分与小数部分得求解合在一起就可以求解任意10进制有理数。

例3, 求(44.375)10 对应得2进制数

将图1,图 2 合并,如图3所示:

%title插图%num

图3

得:(44.375)10=(101100.011)2

例4  求解分数7/3 的2进制表达式,要求精度为0.005(千分之五)

求解步骤如下:

(1)确定2进制位数: 根据2-N<0.005  ,得N=8,

(2)将分数分解成整数+真分数(小数), 即 2+ 1/3

(3)整数部分得2进制数为(10)2   

(4)小数部分求解如下:

%title插图%num

图3

(5)得:(7/3)10≈ (10.01010101)2

 

练习: (1) 20’d976.57 转换成2进制数

             (2) 20’d976.57 转换成8进制数

             (3) 20’d976.57 转换成16进制数

思考题: 如何利用基数连乘,基数连除直接将20’d19.56转换成16进制数。

Posted in IC, 教材与教案, 数字电路基础, 数字电路基础, 文章

发表回复

相关链接