python中stack在实际中的简单应用之进制转换
计算机的世界是二进制的,而人类的世界是十进制的,当数学公式用计算机表达时,经常
要转换。这就用到了进制的转换。
首先,我们先了解一下二进制和十进制的发展历史:
二进制:
现代的二进制首先由大数学家莱布尼兹设计的。
1854年,英国数学家乔治·布尔发表了一篇里程碑式的论文,其中详细介绍了一种代数化的逻辑系统,
后人称之为布尔代数。他提出的逻辑演算在后来的电子电路设计中起基础性作用。
1937年,克劳德·香农在麻省理工大学完成了其电气工程硕士学位论文,用继电器和开关实现了布尔
代数和二进制算术运算。论文题为《继电器与开关电路的符号分析》(A Symbolic Analysis of Relay a
nd Switching Circuits)[6],其中香农的理论奠定了数字电路的理论基础。香农凭这篇论文于1940年被授
予美国阿尔弗雷德·诺贝尔协会美国工程师奖。哈佛大学的哈沃德·加德纳称,香农的硕士论文“可能是本
世纪最重要、最著名的硕士学位论文”。
1937年11月,任职于贝尔实验室的乔治·斯蒂比兹[7]发明了用继电器表示二进制的装置。它是第一台
二进制电子计算机。
可以得出这样的结论:由于计算机的基石就是使用二进制设计的,所以,理所当然二进制就成了计算机
的“”官方语言”。
这里,python的实现代码如下:
- import timeit
- from timeit import Timer
- class Stack:
- def __init__(self):
- self.items = []
- def is_empty(self):
- return self.items == []
- def push(self,item):
- self.items.append(item)
- def pop(self):
- return self.items.pop()
- def peek(self):
- return self.items[len(self.items) - 1]
- def size(self):
- return len(self.items)
- def divide_by_2(dec_number):
- rem_stack = Stack()
- while dec_number > 0:
- rem = dec_number % 2
- rem_stack.push(rem)
- dec_number = dec_number // 2
- bin_string = ""
- while not rem_stack.is_empty():
- bin_string = bin_string + str(rem_stack.pop())
- return bin_string
- print("Test binary value(42):")
- print(divide_by_2(42))
- print(divide_by_2(42))
- def base_converter(dec_number,base):
- digits = "0123456789ABCDEF"
- rem_stack = Stack()
- while dec_number > 0:
- rem = dec_number % base
- rem_stack.push(rem)
- dec_number = dec_number // base
- new_string = ""
- while not rem_stack.is_empty():
- new_string = new_string + digits[rem_stack.pop()]
- return new_string
- print("Test all converter 25:")
- print(base_converter(25,2))
- print(base_converter(25,4))
- print(base_converter(25,8))
- print(base_converter(25,16))
运算结果:
- Test binary value(42):
- 101010
- 101010
- Test all converter 25:
- 11001
- 121
- 31
- 19
python中stack在实际中的简单应用之进制转换的更多相关文章
- ( 转)Sqlserver中tinyint, smallint, int, bigint的区别 及 10进制转换16进制的方法
一.类型比较 bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据,存储大小为 8 个字节.一个字节就是8位,那么b ...
- Python中数字之间的进制转换
Python中的数据转换 在python中可以通过内置方法进行相应的进制转换,但需记得转化成非十进制时,都会将数字转化成字符串 转化成二进制 a = 10 #声明数字,默认十进制 b = bin(a) ...
- Python中进制转换函数的使用
Python中进制转换函数的使用 关于Python中几个进制转换的函数使用方法,做一个简单的使用方法的介绍,我们常用的进制转换函数常用的就是int()(其他进制转换到十进制).bin()(十进制转换到 ...
- python中进制转换
使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer numb ...
- python中的2、8、16、10进制之间的转换
python除法的坑 众所周知,python除法有两个运算符,一个是/,还有一个是//,那么这两个有什么不同之处呢? 从图片可以得知,使用//返回一个float类型,而使用/返回一个int类型.我们总 ...
- jstack:将Process Explorer中看到的进程ID做16进制转换,到ThreadDump中加上0x 前缀即能找到对应线程(转)
原文链接:http://www.iteye.com/topic/1133941 症状: 使用Eclipse win 64位版本,indigo及kepler都重现了,使用tomcat 6.0.39,jd ...
- C++中的各种进制转换函数汇总
C++中的各种进制转换函数汇总 1.在C中,按指定进制格式输出如下: #include <iostream> #include <cstdio> using namespace ...
- java中Integer包装类的具体解说(java二进制操作,全部进制转换)
程序猿都非常懒,你懂的! 今天为大家分享的是Integer这个包装类.在现实开发中,我们往往须要操作Integer,或者各种进制的转换等等.我今天就为大家具体解说一下Integer的使用吧.看代码: ...
- C++中进制转换问题
一直在刷题的时候,都会遇到一个坑,就是进制转换的问题.而每一次都傻乎乎的自己去实现一个.所以算是对以前的坑的一个总结. itoa 函数 itoa是广泛应用的非标准C语言和C++语言扩展函数.由于它不是 ...
随机推荐
- 使用idea生成maven项目的jar包(转)
第一步 第二步 第三步 转自:https://blog.csdn.net/waterimelon/article/details/69243651
- Pandas字符串操作及实例应用
字符串操作 字符串对象方法 val = 'a,b, guido' val.split(',') ['a', 'b', ' guido'] pieces = [x.strip() for x in va ...
- Fedora 25 安装 Bugzilla
最近领导要我们装一个Bugzulla,虽然我们项目已经有了JIRA(我就呵呵),不过我还是找些资料安装了,在此备忘. Bugzilla 是一个开源的缺陷跟踪系统(Bug-Tracking System ...
- 442. Find All Duplicates in an Array找出数组中所有重复了两次的元素
[抄题]: Given an array of integers, 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and o ...
- [leetcode]53. Maximum Subarray最大子数组和
Given an integer array nums, find the contiguous subarray (containing at least one number) which has ...
- centos 7 命令行模式和桌面版之间的切换
CentOS7图形界面与命令行界面切换 在图形界面使用 ctrl+alt+F2切换到dos界面 dos界面 ctrl+alt+F2切换回图形界面 在命令上 输入 init 命令 切换到dos界面 输入 ...
- CentOS7 安装oracle客户端
1.本机环境CentOS7 64 [root@localhost etc]# uname -a Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 ...
- python基础之Day8
一.什么是文件 文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位 文件的操作核心就:读.写 即我们只需要对于进行读写操作,就是对操作系统发起请求,然后由操作系统将用户或者应用程序对文件的读写 ...
- 用ps增加照片的气氛--镜头光晕
1.寻找一张图片 2.新建一个图层填充为黑色 3.选择滤镜---渲染---镜头光晕 4.选择图层模式---滤色. 编辑:千锋UI设计
- Python之路(第三十篇) 网络编程:socket、tcp/ip协议
一.客户端/服务器架构 1.硬件C/S架构(打印机) 打印机作为一个服务端,电脑连接打印机进行打印 2.软件C/S架构 互联网中处处是C/S架构 如谷歌网站是服务端,你的浏览器是客户端(B/S架构也是 ...