十进制转换二进制(C语言)

题目: 链栈 利用链栈实现将一个十进制整数转换成二进制数。然后输出 如:十进制数为出格式类似:十进制数7对应的二进制数为111,对应的八进制数为7

  • 掌握要点:
    • 1.十进制转换成二进制的方法
    • 2.堆栈特点巧妙运用(先进后出,实现倒序)
  • 相关文献:
  • 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

运算过程

要点:除二取余,倒序排列解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取将除得的余数,即换算为二进制数的结果例如把52换算成二进制数,计算结果如图:200除以2得到的余数依次为:00010011,倒序排列,所以200对应的二进制数就是11001000。由于计算机内部表示数的字节单位都是定长的,以2的幂次展开,或者8位,或者16位,或者32位....。于是,一个二进制数用计算机表示时,位数不足2的幂次时,高位上要补足若干个0。本文都以8位为例。那么:(200)10=(11001000)2


实现流程

  1. 建立栈
  2. 初始化栈
  3. 将余数一个个存进栈s中
  4. 元素出栈
  5. 摧毁栈

代码:

#include<stdio.h> #include <malloc.h> #define MaxSize 100 typedef int elemtype; typedef struct { elemtype data[MaxSize]; int top; }SqStack; //建立一个栈 int main() { SqStack *s; s = (SqStack *)malloc(sizeof(SqStack)); s->top = -1; //初始化栈 int num = 111; //待处理的数字 111 while(num > 0) { int m=num/2; int n=num%2; //n进栈 { if(s->top == MaxSize-1) { printf("栈满溢出!!! "); return 0; } s->top++; s->data[s->top]=n; } num=m; } //出栈 { while(s->top != -1) { int res = s->data[s->top]; s->top--; printf("%d", res); } printf(" "); } free(s); //摧毁栈 }

文件下载地址:见文章末尾

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏陈树义

BloomFilter算法

Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的...

3898
来自专栏desperate633

[编程题] 彩色瓷砖分析代码

牛牛喜欢彩色的东西,尤其是彩色的瓷砖。牛牛的房间内铺有L块正方形瓷砖。每块砖的颜色有四种可能:红、绿、蓝、黄。给定一个字符串S, 如果S的第i个字符是'R', ...

943
来自专栏calmound

图的着色

图着色问题,相邻的点颜色不同       基础知识:http://wenku.baidu.com/view/d7242fd1c1c708a1284a444d.h...

2867
来自专栏数据小魔方

让执着成为一种习惯——仿网易数独玫瑰气泡图

没有难学的技艺,只有不够辛勤的付出! 今天这篇文章推送仿的的是网易数独的一幅信息图,内容呈现的是全球各国人民对于养老所持的态度,数据来源于Pew Reserch...

4185
来自专栏人工智能LeadAI

讨厌算法的程序员 | 第五章 合并算法

本篇介绍的“合并”算法,是为后面学习“归并排序”的一个准备。合并算法是归并排序中的一个子算法,请注意两者之间的关系和差异。 之所以把它独立成一篇,一方面是一旦了...

3695
来自专栏ml

位运算的方法,小结

文章来源未知----再次声明为转载... 本文是针对使用位运算来实现一些方法,我们都知道位运算的代价比其他符号运算都低,所以当一个方法只使用位运算且运算次数与其...

37913
来自专栏TensorFlow从0到N

讨厌算法的程序员 5 - 合并算法

本篇介绍的“合并”算法,是为后面学习“归并排序”的一个准备。合并算法是归并排序中的一个子算法,请注意两者之间的关系和差异。 之所以把它独立成一篇,一方面是一旦...

3515
来自专栏mathor

第五届蓝桥杯决赛B组C/C++——信号匹配

1222
来自专栏GIS讲堂

geotools等值线生成

前文中,提到了等值面的生成,后面有人经常会问等值线的生成,本文在前文的基础上做了一点修改,完成了等值线的geotools生成。

3325
来自专栏小樱的经验随笔

2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】

Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K...

2845

扫码关注云+社区

领取腾讯云代金券