妙趣横生的python 算法 之 2进制转10进制
时间:2011-01-24
来源:互联网
- # -*- coding:utf8 -*-
- import os
- import sys
-
- #2进制 to 10进制
- def binary2decimal(binary = "0001"):
- '''
- 根据栈后进先出的特性,我们使用栈完成2 to 10 的 转换
- 算法:
- 公式: Xn,Xn-1,.....X1,X0 = X0 * 2 ** 0,X1 * 2**1,.......Xn-1 * 2 ** n-1.Xn *2 ** n
- 1)将栈有大到小压入栈。
- 2)逐个出栈,* 2 ** i ,这里i为出栈元素的个数,并将数据累加。
- 3) 打印出结果。
- '''
- bs = binary
- #定义Stack
- stack = []
- sum = 0
- #初始化栈
- for i in xrange(len(bs)):
- stack.append(bs[i])
- #开始计算
- for i in xrange(len(stack)):
- value = stack.pop()
- sum += int(value) * ( 2 ** i )
-
- print "decimal is : %s" % sum
-
- #运行脚本
- if __name__ =="__main__":
- binary2decimal("0111")
作者: life-boy 发布时间: 2011-01-24
本帖最后由 a515200 于 2011-01-24 20:08 编辑
这是我以前写的10转2进制的代码
复制代码
这是我以前写的10转2进制的代码
- def main(x):
- def root(x,y=[]):
- if x>=0:
- if x in [0,1]:
- y.append(x)
- return int(''.join([str(x) for x in y[::-1]]))
- else:
- y.append(x%2)
- return root(x/2)
- else:
- print u"请输入一个大等于0的数"
- return root(x)
作者: a515200 发布时间: 2011-01-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28