进制转换的原理是什么?

160 篇文章 11 订阅
152 篇文章 20 订阅

我们对整数部分小数部分分别处理

在一、二部分处理将十进制整/小数转换为任意进制,在最后说明任意进制任意进制的方法。

一、整数部分

现在我们将十进制整数X转换为h进制

我们先看最后结果会长什么样子,假设进制转换完后,h进制下X表示为

\large a_{n}-1{a_{n}}-2a_{n}-3a_{n}-4...a_{2}a_{1}a_{0}

则由进制的表示方法:

\large X=a^{_{n-1}}\times h^{^{n-1}}+a_{n-2}\times h^{^{n-2}}+a^{_{n-3}}\times h^{^{n-4}}+...a_{2}\times h^{2}+a_{2}\times h^{^{1}}+a_{0}\times h^{^{0}}

按照进制规则,这里 \large a_{0} 必是小于h的比如8进制下:

\large 4567_{8}=4\times 8^{^{3}}+5\times 8^{^{2}}+6\times 8^{^{1}}+7\times 8^{^{0}}

我们的思路是逐个求出 \large a_{i} 是多少?

于是只要迭代地 X除以h,直到商为0,将 每次得到的 余数倒序排列 即为答案

过程:

 把各个余数倒序排列,即可得\large a_{n}-1a_{n}-2a_{n}-3a_{n}-4...a_{2}a_{1}a_{0}

这便是短除法的原理

例:

把10进制下123转为2进制,得到1111011(2)

 

二、小数部分

现在我们将小数X转换为h进制(X的整数部分 是0)

还是先看最后结果会长什么样,假设一个数X在转换为h进制后表示为\large 0.a_{1}a_{2}a_{3}...a_{n}-3a_{n}-2a_{n}-1a_{n}

则由进制的表示方法:

\large X=a_{1}\times h^{-1}+a_{2}\times h^{-2}+a_{3}\times h^{-3}+a_{4}\times h^{-4}+...+a_{n-2}\times h^{2-n}+a_{n-1}\times h^{1-n}+a_{n}\times h^{-n}

我们的思路仍是逐个求出 \large a_{i} 是多少

于是只要迭代地 X乘h,直到小数部分为0时停止乘h,将 每次得到的整数部分 正序排列 即为答案 (有时小数部分永远不为0)

过程:

 

 

在一、二部分处理了十进制到任意进制的转换,那任意进制到任意进制如何处理呢?

只需要做一个改变:

若k进制转h进制,只需要在乘除时按k进制计算退位和进位就可以。

这样就实现了任意进制间数的转换

例:七进制转二进制\large \left ( 456 \right )_{7}=\left ( 11101101 \right )_{2}

写在最后

后续我还会发布项目源码或学习资料,希望大家可以持续关注,有什么问题可以给我留言。

不管你是转行也好,初学也罢,进阶也可,如果你想学编程~

值得关注】我的【C/C++源码资料学习群】点击进入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值