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

被折叠的 条评论
为什么被折叠?



