哈喽大家好,我是@菜就多练,输不起,就别玩,今天我来和大家讲解一下进制转换
进制转换有很多种类型,有2进制,3进制,4进制等等等等,其中,我们最常见的是2进制
8进制,10进制和16进制
其中生活中最常见的是10进制和60进制(顺便说一下时钟是60进制)
那么,在c++中该怎么写呢
让我们一起来看看吧
有些人会感觉很难(其实我一开始也是这样)
那么,话不多说,直接来看代码吧
#include<bits/stdc++.h>
using namespace std;
string ans,s[16]="0123456789ABCDEF";
long long n,k;
int main(){
cin>>n>>k;
if(n==0){
cout<<0;
return 0;
}
while(n!=0){
ans=char(n%k+'0')+ans;
n=n/k;
}
cout<<ans;
return 0;
}
首先,s[16]的意思是0到16所有出现的情况,(题目一般只会出2到16进制的问题,所以我只写了2到16)还有,有些题目很老六,他会把n输入为0,所以这个n==0的特判不要忘记
还有一个重点,那个char必须要写,不然会报错
那么话不多说,我们来看k进制转十进制的代码吧!
#include<bits/stdc++.h>
using namespace std;
string n;
long long ans1,p=1,k;
int main(){
cin>>n>>k;
for(int i=n.size()-1;i>=0;i--){
if(n[i]>='0'&&n[i]<='9'){
ans1+=(n[i]-'0')*p;
}
else if(n[i]>='A'&&n[i]<='F'){
ans1+=(n[i]-'A'+10)*p;
}
p*=k;
}
cout<<ans1;
return 0;
}
首先,输入要用string,因为16进制有字母,然后k是当前输入数字的类型,-’A‘+10的原理是一个大写字母,-’A‘可以发现,它比原来数字的ASCLL少十,所以要加十
今天的讲解就到这里了,喜欢的人可以留一下言
关注我一下,你们给我的点赞和关注就是我的动力
那么,我们下期不见不散,拜拜