【背景】

在计算机中,基本的编码都是以二进制为基础。为此,理解进制转换过程,可以帮助我们更好地理解计算机底层的原理。(本题取自广西师范大学2017年硕士研究生招生考试试题编程题部分。)

【源码运行环境】

操作系统:Windows 10

编译环境:Dev C++(基于C99标准)

【原理】

十进制整数转换为二进制整数采用"除2取余,逆序排列"法。

具体做法是:

1、用2整除十进制整数,可以得到一个商和余数;

2、再用2去除商,又会得到一个商和余数;

3、如此进行,直到商为小于1时为止;

4、然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位;

5、依次排列起来。

【例子】

以十进制14转换为二进制1110为例:

初始值:14

1:14 / 2 = 7 ————>余0

2:7  /  2 = 3 ————>余1

3:  3  /  2 = 1  ————>余1

4:  1  /  2 = 0  ————>余1

反向输出:1110即为所求。

【源码实现】

/*

* 方法名:converse

* 作用:用于将一个十进制数字转换为二进制数的递归实现

* 参数:sum(商)i(位数)

* 返回值:rest(以int保存的二进制数)

* author: WellLee

* 最后一次修改时间:2018年12月6日 19:02:32

*/

int converse(int sum, int i)

{

int rest;                  //余数

if(sum <= 1 ){  //递归结束条件

return i * sum;    //结束返回值

}

rest = sum % 2;            //先取余数

sum /= 2;                  //求商取整

rest *= i;                 //进位操作(包括递归部分的i*10)

return rest + converse(sum, i * 10); // 递归部分

}

【总结】

本文提出了一种利用递归保存结果求二进制转十进制的C语言程序实现,实现该功能的程序并不止一种,仅供参考。也借此机会锻炼了自己关于递归程序设计的思想。

【参考文献】

广西师范大学2016年硕士研究生招生考试《806/826 数据结构》试题

十进制转二进制c语言递归,【数据结构】求十进制转二进制的递归算法相关推荐

  1. C++语言递归实现求从n个数中选k个进行组合的组合数

    C++语言递归实现求从n个数中选k个进行组合的组合数 公式: 需要注意结束条件和递推公式的使用. 递归需要用到函数的思想,此处定义一个fun()函数用于求组合数,记住,一旦调用fun()函数,如:fu ...

  2. c语言中将十六进制数转换为十进制数程序,C语言中十六进制转十进制两种实现方法...

    C语言中十六进制转十进制两种实现方法 C语言 · 十六进制转十进制 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英 ...

  3. C语言-递归法求斐波拉切数列

    目录 1 斐波拉契数列 1 斐波拉契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子 ...

  4. 最小公倍数递归c语言,递归法求最大公约数和最小公倍数的实现代码

    #include using namespace std; int gcd(int a, int b);//声明最大公约数函数 int main() { int num1 = 1; int num2 ...

  5. 顺序栈十进制转八进制C语言,顺序栈实现十进制跟八进制之间的转换

    顺序栈实现十进制和八进制之间的转换 顺序栈实现十进制和八进制之间的转换 (1)首先实现栈的初始化,既申请固定大小的数组空间,存储数据,用到的方法是 int InitStack(  struct  sq ...

  6. c语言怎么十进制转八进制,C语言:输入一个十进制转化成八进制输出

    2018-06-06 根据输入的年月日,输出该日为该年度的第几周.第几天. //根据输入的年月日,输出该日为该年度的第几周.第几天.星期几. //如输入: 2007,12,1 //则输出: 48z,3 ...

  7. python递归十进制转化二进制_什么是递归?用十进制转二进制的Python函数示例说明...

    先上用Python写的十进制转二进制的函数代码: def Dec2Bin(dec): result = '' if dec: result = Dec2Bin(dec//2) return resul ...

  8. c语言字符串转成二进制,C语言中字符串如何转换为二进制、八进制、十进制、十六进制...

    在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现 相关函数: atof, atoi, atol, st ...

  9. 十进制转换成十六进制c语言 链栈,C语言 链栈 实现十进制转换二进制,八进制,十六进制...

    C语言 链栈 实现十进制转换二进制,八进制,十六进制 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 最后运行结果:代码:#incl ...

  10. 【C语言】之实现十进制转换为二进制

    /** 文件名:二进制转换.c* 功能描述:把10进制数转换为二进制数* 编写人:王廷云 */ #include <stdio.h>#define NR (sizeof(int)*8) / ...

最新文章

  1. 使用GZIPInputStream和GZIPOutputStream压缩、解压java对象
  2. webpack打包第三方类库的正确姿势
  3. 锤子辩论有感——我该如何定义成功
  4. ielts speaking questions
  5. 日常使用Git,这些问题你遇到过吗?
  6. 解开Future的神秘面纱之任务执行
  7. linux摄像头 自动对焦,基于H3在Linux下驱动OV5640摄像头的方法与流程
  8. 敏捷开发系列学习总结(4)—Git管理工具sourcetree的安装
  9. 夏令营讲课内容整理 Day 6 Part 3.
  10. Fire Net C++
  11. dcs world f15c教学_苏教版译林牛津高中英语必修1-5选修6-11课文听力MP3音频字幕课件教案试题电子课本优质课教学视频...
  12. cpolar——安全的内网穿透工具
  13. 渗透测试报告模板_网站安全测试报告模板该如何写
  14. Unity 小程序开发
  15. [源码解析] 深度学习流水线并行 PipeDream(6)--- 1F1B策略
  16. 读取NTFS的USN(快速检索文件)
  17. a标签在微信iOS版本的解析没有问题,但是在安卓版就解析不出来
  18. 英语发音规则---O字母
  19. java double 出现e_JAVA中double类型运算结果异常的解决
  20. 串口通信,接收并解析数据的方式

热门文章

  1. 电脑重装系统找不到计算机了,戴尔电脑重装系统后找不到硬盘或找不到引导设备怎么办?...
  2. linux redis-trib.rb,redis redis-trib.rb使用密码管理集群
  3. CorelDraw手表实例实操作让你全面了解技术的综合应用
  4. 数组按照字母顺序排序
  5. sm3 算法java_“国密加密算法”SM系列的C#实现方法
  6. select去重 sqlserver_SQLSERVER 去重
  7. 郭天祥 10天搞定单片机 (3)数码管+中断
  8. _crol_和左移的区别
  9. windows7 优化:readyboost总结
  10. ValueError: operands could not be broadcast together with shapes、numpy广播错误