例3:用C++实现十进制转二进制或者十进制转十六进制
【分析】数字的值由两部分组成:数字和位权值。二进制就是位权值为2的幂函数,十六进制就是位权值为16的幂函数。
我们将十六进制进行转换的时候,可以利用权值进行辗转相除法,最后再乘以位权值得到新的进制数。具体代码如下:
//将一个十进制数转换为二进制数或者十六进制数
#include <iostream>
using namespace std;
int flag=1; //标志位,检查n/d是否为0
//转换函数
void trans_num(int n,int d)
{
int mod;
mod=n%d;
n=n/d;
while(flag && n) //flag为0时,不进行转换
trans_num(n,d);
flag=0;
switch(mod)
{
case 10:cout<<"A";
break;
case 11:cout<<"B";
break;
case 12:cout<<"C";
break;
case 13:cout<<"D";
break;
case 14:cout<<"E";
break;
case 15:cout<<"F";
break;
default:
cout<<mod;
break;
}
}
void main()
{
int n,d;
cout<<"输入数字n和进制d:"<<endl;
cin>>n>>d;
trans_num(n,d);
cout<<endl;
}
1)十进制转二进制
图(1)255 = (1111 1111),二进制
2)十进制转十六进制
图(2)255 = (FF),十六进制