进制转化之递归 && 栈

将10进制转换成2进制,是除以2得到的余数,再倒序排列,这可以用递归实现,也可以用数据结构——栈实现。

先看递归实现:

 1 #include<stdio.h>
 2 void to_two(int num);
 3 int main()
 4 {
 5     int a = 10;
 6     to_two(a);
 7
 8     return 0;
 9 }
10 /*递归实现把一个数转成16/8/2进制*/
11 //转16/8/2进制分别求余16/8/2,再除以16/8/2
12 //10 转 2进制
13 void to_two(int num)
14 {
15     if (num!=0)
16     {
17         int remainder = num % 2;
18         to_two(num/2);
19         printf("%d", remainder);//这个输出函数的位置如果和上一句对调位置,将顺序输出
20     }
21     else
22     {
23
24     }
25 }

递归的实现方式,需要一定的逻辑性,如果把上述的打印函数和递归调用调换位置,输出将反向。这里对于递归的基础知识不做解释,如果忘记了,查询相关资料。

这里用递归能够很好的实现把最后求出的数先打印出来,对于这种先进后出,后进先出的模型,很自然会想到栈的实现。

那么,下面用数组实现一个栈,完成这个转换:

时间: 2024-11-08 02:12:28

进制转化之递归 && 栈的相关文章

栈的应用之进制转化

顺序栈的代码: 不再赘述:点击打开链接 //栈的应用-----进制转化 #include"stack.h" int main() { Stack st; InitStack(&st); int select; int num1; //要转化的数 int num2; //转化之后各个位的数 int flag = 1; //控制循环结束 while(flag) { cout<<"****************进制转换*****************&quo

c语言进制转化

#include <stdio.h> // 进制转化 int main(void) { int i1 = 12; int i2 = 88; int i3 = 0x32C; printf("八进制输出i1 = %o\n", i1); // 14 printf("十六进制输出i2 = %x\n", i2); // 58 printf("十六进制输出i3 = %x\n", i3); // 32c printf("十进制输出i3 =

Java Integer 进制转化的实现(附源码),对模与补码的理解

1.toBinaryString方法的实现 1 public static String toBinaryString(int i) { 2 return toUnsignedString0(i, 1); 3 } 4 private static String toUnsignedString0(int val, int shift) { 5 // assert shift > 0 && shift <=5 : "Illegal shift value";

计算机基础知识_进制转化

进制转化 一.任何一个进制转化为10进制的方式 156的十进制可以看做1*10^2 + 5*10^1  +   6*10^0 首先我们看一下156 ,平方,次方等等都是根据后面有多少位决定的,如果用计算机计算,则正好是156 33是一个八进制可以看做3*8^1+3*8^0 次方  换算出来就是10进制 如果你本身是x进制,那么你的数字就看做  num * x^位数  比如我有一个16进制的数字,转为10进制 16进制在计算机中表示方法: 1 2 3 4 5 6 7 8 9 a b c d e f

python数据结构:进制转化探索

*********************************第一部分******************************************************************* *********************************************************************************************************************** # 输入excel的行号,输出对应列的序号(从0开

标识符,进制转化,原反补码等

标识符 Java对包.类.方法.参数.变量等要素命名时使用的字符序列. 规则:***** 1.由字母(含中.英.日.俄等).数字.下划线_和美元符号$组成. 2.不能以数字开头   int 123a=1; 3.区分大小写  int a=1和int A=1是不一样的. 4.长度无限制.(一般编程长度不超过15个字符) 5.不能是Java中的保留字和关键字    int class="1"    int ainta=1 保留字和关键字都有哪些?我们知道以后应该避开它们. 标识符命名习惯:*

进制转化,阶乘(递归法和迭代法)

例如:10 进制转 16 进制,计算公式如下例 1958 转 16 进制 1958 % 16 == 6 1958 / 16 == 122 122 % 16 == 10 也就是 A 122 / 16 == 7 7 < 16 1958 的 16 进制 为 7A6 注意:商作为下一次的被除数 余数保留下来,(定义一个字符串,每次都ADD进去).但是.是十六进制,要将9以上的转化为字符. public static String decToHex(int n) {String r = ""

一个卓有成效的汇编优化范例--使用SSE2指令优化进制转化

我的一个感兴趣的编程方向是大数计算,因此用汇编语言写了很多大数计算方面的小程序,上周突然想出一个使用SSE2指令将整数转为16进制字符串的好主意,遂付诸实现.原以为至多可提速500%,那知测试后发现,相对于最初的C语言版本,速度竟提高20倍以上,兴奋之余,遂有了这篇博客文章. 这个程序主要示范将64bit一个整数转化为16进制字符串的功能,功能和算法都比较简单.我相信许多人都写过类似的程序,但不知有没有人尝试去你优化它.这个示范程序包括3个C语言版和1个使用SSE2指令的汇编语言版.下面我们给出

实现10进制转化成其它进制

<?php/** * Created by PhpStorm. * User: lenovo * Date: 2016/4/1 * Time: 17:10 */ header('content-type:text/html;charset=utf-8'); // 获取被转化数字及转化进制 $num = isset($_POST['num'])?$_POST['num']:''; $connect = isset($_POST['connect'])?$_POST['connect']:''; /