数据结构6:栈的应用(十进制转化为二进制)
十进制转化为二进制,采用的是“除以2求余数”的算法,就是将整数不断除以2,每次得到的余数就是由低到高的二进制
这个“除以2”的过程得到的余数是从低到高的次序,而输出则是从高到低,所以需要一个栈来反转次序。
十进制转化为二进制代码实现:
class Stack():"""定义一个栈"""def __init__(self):self.items = []def isEmpty(self):return self.items() == []def pop(self):return self.items.pop()def push(self, item):return self.items.append(item)def peek(self):return self.items[len(self.items)-1]def size(self):return len(self.items)def divideBy2(decNumber):remstack = Stack()while decNumber > 0:rem = decNumber % 2 #求余数remstack.push(rem)decNumber = decNumber // 2 # 整数除binString = ""while not remstack.isEmpty():binString = binString + remstack.pop()return binString
如果是转化为八进制或十六进制呢,简单修改一下就可以了。
class Stack():"""定义一个栈"""def __init__(self):self.items = []def isEmpty(self):return self.items() == []def pop(self):return self.items.pop()def push(self, item):return self.items.append(item)def peek(self):return self.items[len(self.items)-1]def size(self):return len(self.items)def divideBy(decNumber, base):digits = '0123456789ABCDEF'remstack = Stack()while decNumber > 0:rem = decNumber % base #求余数remstack.push(rem)decNumber = decNumber // base # 整数除binString = ""while not remstack.isEmpty():binString = binString + digits[remstack.pop()]return binStringprint(divideBy(35, 8))
数据结构6:栈的应用(十进制转化为二进制)相关推荐
- 栈的输出_栈和队列--十进制转化为二进制
需求:编写程序使十进制转换成为二进制 分析:十进制转换二进制.如图,只需要不断除以2,然后将余数逆置即可,我们可以将余数依次输入到栈中,利用栈先进后出的特性,再将栈中元素输出即可得到二进制序列 int ...
- 把十进制转化为二进制的一种方法
把十进制转化为二进制的一种方法: void pb(int n){if(n != 0){pb(n/2);putchar('0'+n%2);} }int main(void){for(int i=10; ...
- python十进制转化为二进制
python十进制转化为二进制 实例:给定一个非负十进制数n,如何将其转换成为一个二进制数? 输入:123 输出:1111011 输入:1363 输出:10101010011 输入:12 输出:110 ...
- 十进制转化成二进制(C++)
十进制转化为二进制的方法,在数学上是除二取余法,如下图(自己在画图上画的,有点子丑,,,): 我这是以36为例,用36不断的去除二取余,左边就是余数,最后从下至上把余数连起来,就是我们要得到的结果,就 ...
- C语言——十进制转化为二进制
十进制转化为二进制:将十进制一直除以二,然后用数组储存余数,并取商,如此循环直到十进制数小于零. #include <stdio.h> void main() { short int n ...
- java十进制转化为二进制
十进制转化为二进制的方法 Integer.toBinaryString(int i) 注意:转化的二进制以字符串的形式返回 查看一个数的二进制上某一位是0还是1的方法: 1.屏蔽法 num & ...
- c语言实例--十进制转化为二进制
问题:实现十进制转化为二进制的代码. 思路先行: 第一步:十进制转化为二进制的过程中,就是每次除2取余,并存放在数组中. 第二步:输入的数字在0-32767之间. 第三步:for循环(从0到14位,最 ...
- 十进制转化为二进制与十六进制显示(汇编程序)
stacks segment stack dw 200h dup(0);不太明白要200h这么大 stacks ends data segment in_buf db 6;定义输入字符串最大长度 in ...
- C语言基础代码合集 | 十进制转化为二进制
1. 九九乘法表 #include <stdio.h> int main(void) {int a,b;for (a=1;a<=9;a++)//列的循环{for(b=a;b<= ...
最新文章
- Python 判断类型
- Python学习的十个阶段,学完大成,对应一下看看你自己在哪个阶段
- UML类关系(依赖,关联,聚合,组合,泛化,实现)
- HDFS EditsLog和FsImage日志机制
- 【渝粤教育】国家开放大学2018年春季 0233-21T学前儿童语言教育 参考试题
- hihoCoder #1758 加减
- C++ STL list删除和修改
- 信息学奥赛一本通 1131:基因相关性 | OpenJudge NOI 1.7 03
- java类与接口练习
- JVM GC日志说明
- C#之多态与继承汽车类
- 【恋上数据结构】贪心(最优装载、零钱兑换、0-1背包)、分治(最大连续子序列和、大数乘法)
- [Node.js]001.安装与环境配置
- The requested PHP extension ext-redis * is missing from your system. Install or enable PHP's redis e
- (机器人学导论--运动学)(三)DH表达法顺向运动学
- 费曼:微积分是上帝的语言 | 书摘
- 遗传+粒子群 求解多配送中心车辆调度问题(python)
- network secruity studay day2
- 【java毕业设计】基于java+SSH+jsp的网上体育商城设计与实现(毕业论文+程序源码)——网上体育商城
- 什么专业要学计算机思维导论,大学计算机:计算思维导论CAP
热门文章
- 手持天馈线测试仪 哪一款性价比最高
- 【web前端期末大作业】基于html+css+javascript+jquery技术设计的音乐网站(44页)
- el-table闪动问题
- python正则表达式入门教程括号及字符
- java中的LinkedList(链表)与ArrayList(动态数组):(2)尝试简单实现LinkedList
- html收藏页面代码,我的收藏页面.html
- OSChina 周六乱弹 —— 为什么中国人到了非洲都成了非洲粉
- 【佳学基因人工智能】在ANACOND3下如何安装NUMPY
- 一年规划: 服务器后端+分布式+微服务+具有产品思维,20210504
- Eclipse使用Maven创建Web时错误:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webap