精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-04
# -*- 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") 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-05-04
"0111".to_i(2) #=> 7 |
|
返回顶楼 | |
发表时间:2010-05-04
int('0111',2) |
|
返回顶楼 | |
发表时间:2010-05-05
这个我可能没有表达明确,不好意思啊
这个是通过2-》10 学习栈的数据结构 :) |
|
返回顶楼 | |
发表时间:2010-05-05
这个太c化了,python没必要写那么长的...
bin=lambda s: sum( [ (ord(v)-48)<<i for i,v in enumerate(s[::-1]) ] ) |
|
返回顶楼 | |
发表时间:2010-05-08
edisonlz 写道 这个我可能没有表达明确,不好意思啊
这个是通过2-》10 学习栈的数据结构 :) 一点也不妙趣横生,为什么要用栈啊。。。倒着遍历不就行了 binary[::-1] |
|
返回顶楼 | |
发表时间:2010-05-09
lzyzizi 写道 edisonlz 写道 这个我可能没有表达明确,不好意思啊
这个是通过2-》10 学习栈的数据结构 :) 一点也不妙趣横生,为什么要用栈啊。。。倒着遍历不就行了 binary[::-1] 这位老兄说得是,学习下数据结构倒也无可厚非,但内容真的是一点也不“妙趣横生”啊…… |
|
返回顶楼 | |
发表时间:2010-05-12
确实,搞复杂了,倒序就行
|
|
返回顶楼 | |
发表时间:2010-05-14
确定复杂了点!
|
|
返回顶楼 | |
发表时间:2010-05-29
在讨论中进步啊,愈加清晰了
|
|
返回顶楼 | |