妙趣横生的python 算法 之 2进制转10进制

# -*- 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")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值