转自葫芦岛一中李思洋
1) 十进制变N进制
短除法:不断地除N,直到那个数变成1。把所有的余数连接到一起,就是转换后的N进制数。
// bit[]是对应的N进制位,top是N进制下的最后一位数字的序号(从0开始)
void convertTo(int num, int base, int *bit, int &top)
{
top=-1;
do
{
bit[++top] = num%base; // 可直接输出num%base
num/=base;
} while (num>0);
}
(2) N进制变十进制
大家应该知道怎样将N进制转变为十进制。现在,用秦九韶算法进行计算。
// bit[]是对应的N进制位,top是N进制下的最后一位数字的序号(从0开始)
// 返回值是十进制数。
int convertFrom(int base, int *bit, int top)
{
int ans=0;
for (int i=top; i>=0; i--)
{
ans*=base;
ans+=bit[i];
}
return ans;
}