第二节 进制转换
基础知识
十进制转二进制
除二取余法: 用2连续除十进制整数,直到商为0,逆序排列余数即可得到该十进制数的二进制表示。
例如十进制57转为二进制数:
- 57除以2得28余1
- 28除以2得14余0
- 14除以2得7余0
- 7除以2得3余1
- 3除以2得1余1
- 1除以2得0余1(商为0,结束)
逆序排列余数(从下往上)得到二进制数:111001B。
十进制整数转n进制同理,即除n取余法。
二进制数转十进制
按位权展开: 在数制中,各位数字所表示值的大小不仅与该数字本身的大小有关,还与该数字所在的位置有关,我们称其为数的位权, 简称权。
对于形式化的进制表示,我们可以从0开始,对数字的各个数位进行编号,即从个位起向左依次编号为0、1、2、…;对称的,小数点后的数位则是-1、-2、…。
如下表为二进制数111001.000B的位权表示:
位权 | 25 | 24 | 23 | 22 | 21 | 20 | 2-1 | 2-2 | 2-3 | |
---|---|---|---|---|---|---|---|---|---|---|
数值 | 1 | 1 | 1 | 0 | 0 | 1 | . | 0 | 0 | 0 |
任意R进制数按权展开,相加即可得到十进制数,如二进制数111001B转为十进制数:
1×25+1×24+1×23+0×22+01+1×20=57
其他进制数转十进制数同理,十进制数的位权是以10为底的幂,二进制数的位权是以2为底的幂,十六进制数的位权是以16为底的幂。数位由高向低,以降幂的方式排列。
进制快捷转换
由于2的3次方是8,所以二进制树转为八进制数时,可三个数一组进行转换(优先满足右侧分组,左侧最高位不够可以补零),每组内位权编号重新从零开始计算。例如,二进制数111001B转为八进制数:
(111)(001)B=(1×22+1×21+1×20)(0×22+0×21+1×20)O=71O
同理,由于2的4次方是16,二进制数转为十六进制数时,可四个数一组进行转换(优先满足右侧分组,左侧最高位不够可以补零),如二进制数111001B转为十六进制数:
(11)(1001)B=(1×21+1×20)(1×23+0×22+0×21+1×20)H=39H
其他进制间转换时,若进制存在幂运算关系,也可以此方法进行快捷转换。
十进制小数转二进制小数
乘二取整法: 用2乘十进制小数,可以得到积,将积的整数部分去除,再用2乘余下的小数部分,如此循环,将每步取出的整数部分顺序排列,得到小数的二进制表示。
整数部分用除二取余法得到二进制整数,小数部分用乘二取整法得到二进制小数。例如,十进制数32.12转为二进制数的步骤如下:
- 整数部分为32,小数部分为0.12
- 整数部分32除二取余法得到二进制数100000。
- 小数部分:
0.12×2=0.24取整数0
0.24×2=0.48取整数0
0.48×2=0.96取整数0
0.96×2=1.92取整数1(后续运算因数变为0.92)
0.92×2=1.84取整数1
0.84×2=1.68取整数1
(此时会发现,有的数的小数部分乘二取整法可能会无线运算下去,这时须按照题目精度要求截取足够位数即可)
顺序排列取出整数,得到小数部分二进制数为.000111。 - 结合得到最终二进制数为100000.000111。
总结:整数部分,除二取余,逆序排列;小数部分,乘二取整,顺序排列。
赛题训练
- 二进制数1011转换成十进制数是( )。
A.11 B.10 C.13 D.12 - 下列四个不同进制的数中,与其他三项数值不相等的是( )。
A.(269)16 B.(617)10 C.(1151)8 D.(1001101011)2 - 请选出以下最大的数( )。
A.(550)10 B.(777)8 C.210 D.(22F)16 - 十进制小数13.375对应的二进制数是( )。
A.1101.011 B.1011.011 C.1101.101 D.1010.01 - 与二进制小数0.1相等的八进制数是( )。
A.0.8 B.0.4 C.0.2 D.0.1 - 与二进制小数0.1相等的十六进制数是( )。
A.0.8 B.0.4 C.0.2 D.0.1 - 下面有四个数据组,每个组各有三个数据,其中第一个数据为八进制数,第二个数据为十进制数,第三个数据为十六进制数。这四个数据组中三个数据的是( )
A.120 82 50 B.144 100 68 C.300 200 C8 D.1762 1010 3F2