关于进制的转换
三道题:
十进制转换成任意进制
任意进制转换成十进制
任意进制转换
今天在学校刷的几道联系紧密的题目,全部都是关于进制的转化。
于是就来博客上整理一下。
首先是十进制转换成任意进制:
十进制转换成任意进制使用的是倒排取余法。
例子就不举了,相信大家对于十进制转二进制的原理应该都是明白的。
其实对于其他形式的进制也是一样的:
只不过是把%和/的2换成了所要转换的进制数
emmm
应该是非常显而易见的。
对吧?
然后呢,代码如下,方便大家理解。
#include<cstdio>
using namespace std;
int m,n,i=1;
int a[100];
int main(){
scanf("%d%d",&n,&m);
while(n){
a[i]=n%m;
n/=m;
i++;
}
for(int j=i-1;j>=1;j--){
if(a[j]==10) printf("A");
if(a[j]==11) printf("B");
if(a[j]==12) printf("C");
if(a[j]==13) printf("D");
if(a[j]==14) printf("E");
if(a[j]==15) printf("F");
if(a[j]<10) printf("%d",a[j]);
}
return 0;
}
我相信以大家的能力一定是能够理解的!!!
特别的,关于ABCDEF的存在:
显然‘10’代表‘A’ …… 以此类推
其次就是任意进制转换成十进制
其实就是我们把十进制转换成任意进制的逆过程。
然后同样的可以以二进制转换成十进制为例,大家自己思考。
我们代码的实现同样是把2换成其他所要转换的进制而已。
特殊的!注意把‘A’转换成‘10’,需要使用字符串和ASCII 码表辅助转换。
代码大家自己思考。
最后关于任意进制的转换
显而易见。
如果我要将一个进制转换成另一个进制。
我们可以借助中间的10进制。
那么显然我们只要把上面的两层代码结合起来就可以得到我们所要的操作。
于是,
显然的,
我依然不会提供代码啦!!!
祝大家好运~~~
[by 某个不知名的精分患者
]