CSP初赛知识精讲--进制转换

第二节 进制转换

基础知识

十进制转二进制
除二取余法: 用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的位权表示:

位权2524232221202-12-22-3
数值111001.000

 任意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转为二进制数的步骤如下:

  1. 整数部分为32,小数部分为0.12
  2. 整数部分32除二取余法得到二进制数100000。
  3. 小数部分:
    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。
  4. 结合得到最终二进制数为100000.000111。

总结:整数部分,除二取余,逆序排列;小数部分,乘二取整,顺序排列。

赛题训练

  1. 二进制数1011转换成十进制数是( )。
    A.11   B.10  C.13  D.12
  2. 下列四个不同进制的数中,与其他三项数值不相等的是( )。
    A.(269)16  B.(617)10  C.(1151)8  D.(1001101011)2
  3. 请选出以下最大的数( )。
    A.(550)10   B.(777)8  C.210  D.(22F)16
  4. 十进制小数13.375对应的二进制数是( )。
    A.1101.011  B.1011.011  C.1101.101  D.1010.01
  5. 与二进制小数0.1相等的八进制数是( )。
    A.0.8 B.0.4 C.0.2 D.0.1
  6. 与二进制小数0.1相等的十六进制数是( )。
    A.0.8 B.0.4 C.0.2 D.0.1
  7. 下面有四个数据组,每个组各有三个数据,其中第一个数据为八进制数,第二个数据为十进制数,第三个数据为十六进制数。这四个数据组中三个数据的是( )
    A.120 82 50  B.144 100 68 C.300 200 C8 D.1762 1010 3F2
  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值