C++进制转换(十进制转二进制、八进制、随意进制)

时间:2023-03-08 16:38:07
C++进制转换(十进制转二进制、八进制、随意进制)

十进制转二进制:

//十进制转二进制
#include<iostream>
using namespace std; void printbinary(const unsigned int val)
{
for(int i = 16; i >= 0; i--)
{
if(val & (1 << i))
cout << "1";
else
cout << "0";
}
} int main()
{
printbinary(1024);
return 0;
}

十进制转八进制

//十进制转八进制
#include <iostream>
#include <vector>
using namespace std; int main()
{
cout<<"input a number:"<<endl;
int d;
vector<int> vec; cin>>d;
while (d)
{
vec.push_back(d%8);
d=d/8;
} cout<<"the result is:"<<endl;
for(vector<int>::iterator ip=vec.end()-1;ip>=vec.begin();)
{
cout<<*ip--;
}
cout<<endl; return 0;
}

十进制转随意进制:

//十进制转换为随意进制的源代码
#include <iostream>
using namespace std; int main()
{
long n;
int p,c,m=0,s[100];
cout<<"输入要转换的数字:"<<endl;
cin>>n;
cout<<"输入要转换的进制:"<<endl;
cin>>p; cout<<"("<<n<<")10="<<"("; while (n!=0)//数制转换,结果存入数组s[m]
{
c=n%p;
n=n/p;
m++;s[m]=c; //将余数按顺序存入数组s[m]中
} for(int k=m;k>=1;k--)//输出转换后的序列
{
if(s[k]>=10) //若为十六进制等则输出相相应的字母
cout<<(char)(s[k]+55);
else //否则直接输出数字
cout<<s[k];
} cout<<")"<<p<<endl; return 0;
}

通过库函数实现八进制、十六进制输出:

#include <iostream>
using namespace std; int main()
{
int test=64;
cout<<"DEC:"<<test<<endl;
cout<<"OCT:"<<oct<<test<<endl;//八进制
cout<<"HEX:"<<hex<<test<<endl;//十六进制 return 0;
}

C++进制转换(十进制转二进制、八进制、随意进制)