+ -
当前位置:首页 → 问答吧 → 妙趣横生的python 算法 之 2进制转10进制

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

时间:2011-01-24

来源:互联网

  1. # -*- coding:utf8 -*-
  2. import os
  3. import sys

  4. #2进制 to 10进制
  5. def binary2decimal(binary = "0001"):
  6.     '''
  7.     根据栈后进先出的特性,我们使用栈完成2 to 10 的 转换
  8.     算法:
  9.         公式: Xn,Xn-1,.....X1,X0 = X0 * 2 ** 0,X1 * 2**1,.......Xn-1 * 2 ** n-1.Xn *2 ** n
  10.         1)将栈有大到小压入栈。
  11.         2)逐个出栈,* 2 ** i ,这里i为出栈元素的个数,并将数据累加。
  12.         3) 打印出结果。
  13.     '''
  14.     bs = binary
  15.     #定义Stack
  16.     stack = []
  17.     sum = 0
  18.     #初始化栈
  19.     for i in xrange(len(bs)):
  20.         stack.append(bs[i])
  21.     #开始计算
  22.     for i in xrange(len(stack)):
  23.         value  = stack.pop()
  24.         sum +=  int(value) * ( 2 ** i )
  25.    
  26.     print  "decimal is : %s"  % sum
  27.    
  28. #运行脚本
  29. if __name__ =="__main__":
  30.     binary2decimal("0111")
复制代码

作者: life-boy   发布时间: 2011-01-24

本帖最后由 a515200 于 2011-01-24 20:08 编辑

这是我以前写的10转2进制的代码
  1. def main(x):
  2.         def root(x,y=[]):
  3.             if x>=0:
  4.                if x in [0,1]:
  5.                   y.append(x)
  6.                   return int(''.join([str(x) for x in y[::-1]]))
  7.                else:
  8.                   y.append(x%2)
  9.                   return root(x/2)
  10.             else:
  11.                   print u"请输入一个大等于0的数"
  12.         return root(x)
复制代码

作者: a515200   发布时间: 2011-01-24