10进制以下的任意进制转换

首先说一下进制问题

       进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制---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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值