十进制转换为十六进制-八进制-二进制的进制转换计算

进制换算在工作中是一项必不可少的技能,例如在RTC中得到的数据为十六进制的,但是我们使用时用的是十进制。这就免不了进行进制之间的换算。进制之间的换算可以手动计算进行换算,也可以编写程序进行换算。这里主要选提一下手动换算。掌握了手动换算,也就掌握了进制换算的灵魂,之后再编写程序进行换算自然不在话下。

我们都知道,多少进制就是逢多少进一。例如我们最熟悉的十进制就是逢十进一,当我们数到9,这时下一个数是10,这里我们把个位清零,向高位进一。那么十六进制就是逢十六进一,八进制就是逢八进一,二进制就是逢二进一。

话不多说直接上例子。

例1:将20转换为二进制,十六进制,八进制。

解:先看十进制转换为二进制。将要转换的十进制数放在被除数位置,要转换成的二进制放在除数位置(除数位置的值取要转换成几进制就是几,这里是转换成二进制,所以除数位置为2)。然后依次做除法,把每一次运算的余数写在每一次运算商的后面,如果除尽,就写零。这样一直到不能再进行除法为止。然后,按照余数得出的顺序逆序写出,结果就是要转换的结果。见下图,余数得出的顺序为00101(即从上至下),然后将余数逆序写出,即10100。这样就得出了十进制20转换为二进制的结果10100。

                                                            

我们来对结果进行一下验证,我们知道上面得出的二进制的结果即为1*2^{4}+0*2^{3}+1*2^{2}+0*2^{1}+0*2^{0}=16+0+4+0+0=20。显然这个二进制的转换结果是正确的。

再看十进制转换为十六进制。同样按照上面的方法,被除数20保持不变,除数变为16(因为这次是要转换为十六进制),随后进行除法运算。结果如图。将余数逆序写出,得十进制20转换十六进制结果为14。

                                                            

我们再来对结果进行一下验证,我们知道上面得出的十六进制的结果即为1*16^{1}+4*16^{0}=16+4=20。显然这个十六进制的转换结果同样是正确的。

最后看十进制转换为八进制。依旧按照上面的方法,被除数20保持不变,除数变更为8(因为这次是要转换为八进制),随后进行除法运算。结果如图。将余数逆序写出,得十进制20转换八进制结果为24。

                                                             

我们还是对结果进行一下验证,我们知道上面得出的八进制的结果即为2*8^{1}+4*8^{0}=16+4=20。显然这个十六进制的转换结果同样是正确的。

到这里,进制换算的方法相信大家也有一个大致的概念了。这里再总结一下:

1.将被除数位置写上要被转换的十进制数

2.将除数位置写上要转换成的进制数的数值(转换为16进制就写16,转换为八进制就写8,转换为二进制就写2)

3.进行除法计算,将余数依次写在每一次运算商的后面(如果除尽就写0)

4.将商逆序排列写出,即得转换之后的进制值

注意:这个算法只适用于十进制转换为各进制,不适用于各进制之间的转换。也就是被除数一定是十进制数。

后记:不知道大家在学习进制转换的时候有没有想过一个问题,就是为什么要把余数逆序写出,为什么越晚出现的余数位数越高?

这个问题困扰了我挺长时间,上学的时候只知道这么算,不知道为什么。上周的某一天晚上我突然想明白了,这里抛出一解释,供大家参考。

我以上面的20转换为二进制为例。可以看出,每一次的除数不变,那么一直进行除法就说明一直可以被2除,越后面出来的余数其除数位置2的幂次越高,所以自然也就越靠近高位。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值