进制转换类

C语言中二进制、十进制等进制转换方法
本文主要介绍了C语言中不同进制的转换方法。包括二进制转十进制的权重相加法,十进制转二进制的权重相减法,还提及了十进制与八进制、十六进制的转换,如二进制与八进制、十六进制相互转换的分割及对应转换规则等。

1、记住权重
从低到高的权重顺序为:1、2、4、8、16、32、64、128、256……

2、二进制转换为十进制的方法:权重相加法  
 例:
  (1010,1101)2=(   ?  )10(这里如何用角标表示10?)

即:二进制10101101转换成十进制,如何计算呢?简单。权重相加即可。先从右侧小数点向左数:1、2 、4、8、、16、32、64、128,最高位为128,好啦,我们现在开始逐位将二进制数转换成对应的十进制,即:用该位的权重X该位上的数值。如果某位为0则乘积为0。然后将各个位的乘积逐个相加计算,其方法为:

128+0+32+0+8+4+0+1=173

转换完毕。

3、十进制转换为二进制的方法:权重相减法
例:
(186)10=(   ?  )2

同理,使用权重相减法。即:(1)先找到比十进制数稍小的权  (2)用十进制数逐一做减法,如果够减,写1,不够减则写0,直到被减数为1 时止。本例的计算方法为:

186-128= 58       够减,写1

58-64=?           不够减,写0,继续

58-32=26           够减写1

26-16=10           够减写1

10-8=2               够减写1

2-4=?               不 够减写0

2-2=0                 够减写1

0-1=?             不够减写0

可见, (186)10=( 1011,1010 )2, 转换完毕。

如果需要计算小数,则记下小数点向右数的权重,依本方法计算即可。

4、十进制转换为八进制、十六进制的方法
这部分很简单,一般书上都会介绍,我这里简单重复一下。

(1)二进制转八进制
将二进制数从小数点位置 向左数,每3位一分割,然后将每3位转换为对应的八进制数(每段仍然可以使用权重法)。例:二进制数(10,101,110)2,转换为相应八进制数为:(256)8

(2)八进制转二进制
每位八进制数转换成相应的3位2进制数。转换后不够3位的在前面(数的左侧)用0补足3位(首位二进制数前面不用补0)。例:(147)8=( ?  )2

(147)8=(1,100,111  )2

(3)二进制转为十六进制:
将二进制数从小数点的位置向左数,每4位一分割,然后将每4位转换为对应的十六进制数。例:二进制数(1010,1110)2,转换为相应十六进制数为:(AE)16

(110,1110,1101)2=(  ? )。将每4位转换为1位,结果为:(6ED)16

(4)试将十六进制转为二进制:
将每位十六进制数,转换对应的4位二进制,不够4位的在前面(数的左侧)用0补足:十六进制数(5A9)16,转换为相应二进制数为:

例:(5A9)16=(  ? )。将每位转换成4位,结果为:(101,1010,1001)2
————————————————
版权声明:本文为CSDN博主「hahabj」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/joyousmime/article/details/110210059

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值