我们对整数部分和小数部分分别处理
在一、二部分处理将十进制整/小数转换为任意进制,在最后说明任意进制到任意进制的方法。
一、整数部分
现在我们将十进制整数X转换为h进制
我们先看最后结果会长什么样子,假设进制转换完后,h进制下X表示为
则由进制的表示方法:
按照进制规则,这里 必是小于h的比如8进制下:
我们的思路是逐个求出 是多少?
于是只要迭代地 X除以h,直到商为0,将 每次得到的 余数倒序排列 即为答案
过程:
把各个余数倒序排列,即可得
这便是短除法的原理
例:
把10进制下123转为2进制,得到1111011(2)
二、小数部分
现在我们将小数X转换为h进制(X的整数部分 是0)
还是先看最后结果会长什么样,假设一个数X在转换为h进制后表示为
则由进制的表示方法:
我们的思路仍是逐个求出 是多少
于是只要迭代地 X乘h,直到小数部分为0时停止乘h,将 每次得到的整数部分 正序排列 即为答案 (有时小数部分永远不为0)
过程:
在一、二部分处理了十进制到任意进制的转换,那任意进制到任意进制如何处理呢?
只需要做一个改变:
若k进制转h进制,只需要在乘除时按k进制计算退位和进位就可以。
这样就实现了任意进制间数的转换
例:七进制转二进制
写在最后
后续我还会发布项目源码或学习资料,希望大家可以持续关注,有什么问题可以给我留言。
不管你是转行也好,初学也罢,进阶也可,如果你想学编程~
【值得关注】我的【C/C++源码资料学习群】点击进入