首先说一下进制问题
进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一.
假设一个数字N可以用P进制表示,那么有
N = a0 * P^0 + a1 * P^1 + a2 * P^2 + … + ak * P^k
其中 (0 <= ai < P)
例子:
(1)15分解为2进制
15 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8(1111)
(2)15分解为7进制
15 = 1 * 1 + 2 * 7
观察容易发现 ,N % P之后得到的是a0的值
同时 N 整除P以后 继续 %P 得到的是a1…
如此继续
于是可以得到P进制下的{a0,a1…ak}
#include "iostream"
using namespace std;
void DexToOther(int num,int n,char *str) //num为准备转换进制的数字.也可以用字符串
{
if (num!=0)
{
*str++=num%n+'0';
num=num/n;
DexToOther(num,n,str);
}
}
int main ()
{
char str[10];
int num=100;
memset(str,0,sizeof(str)); //初始化字符串
DexToOther(num,2,str);
strrev(str); //字符串反转
printf ("%s\n",str);
return 0;
}