十进制转二进制
#include<stdio.h>
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int a[10000];
int i=0;
if(n==0){
printf("0\n");
continue;
}
while(n){
a[i]=n%2;
i++;
n=n/2;
}
for(int j=i-1;j>=0;j--){
printf("%d",a[j]);
}
printf("\n");
}
return 0;
}
二进制转十进制
#include<stdio.h>
int main(){
int a;
scanf("%d",&a);
int n=0,cnt=1;
while(a){
n=n+(a%10)*cnt;
a=a/10;
cnt*=2;
}
printf("%d",n);
}
十六进制转十进制
#include<stdio.h>
int main(){
int a;
scanf("%x",&a);
printf("%d",a);
return 0;
}
#include<iostream>
#include<string>
#include<bitset>
using namespace std;
string change(int num){
string bin=bitset<32>(num).to_string();
return bin.substr(bin.find('1'));
}
int main(){
cout << "输入一个16进制" << endl;
string s;
cin >> s;
//16进制转10进制
int num=stoi(s,nullptr,16);//(要转换的字符串,默认nullptr,进制);
cout << "十六进制" << s <<" 转十进制:" <<num << endl;
//2进制转10进制
string str;
cout << "输入一个2进制" << endl;
cin >> str;
int num2=stoi(str,nullptr,2);
cout << "二进制" << str <<" 转十进制:" <<num2 << endl;
//10进制转2进制
int num3;
cout << "输入一个10进制(转二进制)" << endl;
cin >> num3;
cout << bitset<32>(num3) << endl;//输出会有前导0 通常最大32位 适用于int类型
//去掉前导0
cout << change(num3) << endl;
//10进制转八进制
printf("十进制转 %d 转八进制: %o\n",num3,num);
//10进制转16进制
printf("十进制转 %d 转八进制: %X\n",num3,num);
}
任意进制转10进制 : stoi(str,nullptr,base)
10进制转任意进制:
//十进制转任意进制
#include<iostream>
#include<string>
using namespace std;
string change(int num,int base){
if(num==0) return "0";
string chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //最高支持36进制
string result="";
int flag=1;
if(num < 0){
flag=-1;
num=-num;
}
while(num>0){
result=chars[num%base]+result;
num/=base;
}
return flag==-1?"-"+result : result;
}
int main(){
int num;
cin >> num;
cout << "转二进制:" << change(num,2) << endl;
cout << "转七进制:" << change(num,7) << endl;
}