递归实现十进制转X进制
作者:yxin1322
blog:
http://blog.csdn.net/yxin1322
转载请注明出处
我们在初学进制转换的时候,最常用的十进制转换其他进制方法当数“
除n取余法”了,其中n是目标进制的基数。例如我们要把十进制的9转换成2进制,用除2取余法有如下过程:
2 | 9
-----
2 | 4 ..... 1
------
2 | 2 ..... 0
------
2 | 1 ..... 0
------
0 ..... 1
-----
2 | 4 ..... 1
------
2 | 2 ..... 0
------
2 | 1 ..... 0
------
0 ..... 1
将每一步的余数自下而上输出即得9的二进制表示,把除数2换成其他整数还可以得到9的其他进制的表示。模拟这一过程,编写了函数Convertor,可以完成十进制到任意进制数的转换。
代码如下:
1 /* 2 code by: yxin1322 3 date: 2006.1.8 4 blog: http://blog.csdn.net/yxin1322 5 Email: yxin1322@gmail.com 6 */ 7 #include <stdio.h> 8 9 void Convertor(int n, int base); /*n为待转换十进制数,base为目标进制基数*/ 10 11 int main() 12 { 13 Convertor(34,2); 14 printf("/n"); 15 } 16 17 void Convertor(int n, int base) 18 { 19 int temp=n%base; 20 n=n/base; 21 22 if(n==0) 23 printf(" %d",temp); 24 else 25 { 26 Convertor(n,base); 27 printf(" %d",temp); 28 } 29 }
调用函数Convertor(
34,
2),输出“
1 0 0 0 1 0”,即为34的二进制码。需要说明的是,当进制基数大于10时,程序并没有安排其他字母来代替大于10的数字,如当调用形式为Convertor(
31,
16)时,输出为“
1 15”,它相当于16进制表示法的
1F,程序仅简单地将结果的数位之间用空格隔开。