在Python中将数字转换为二进制

时间:2011-12-12 20:33:45

标签: binary python-3.x

我正在尝试生成输入的值,例如5,并生成该值的二进制版本,并告诉它有多少1和0。有谁知道我应该怎么做?还有我如何对输出进行排序

十进制二进制零点

5 101 2 1

def begin():
    str=0
    num = []

    while num != -1:

        num = int(input('Please enter some positive integers. Enter -1 to quit.\n'))

        if num > 512:
            str += 1
            num-=512
        else:
            str += 0

        if num > 256:
            str += 1
            num-=256
        else:
            str +=0

        if num > 128:
            str += 1
            num-=128
        else:
            str +=0

        if num > 64:
            str += 1
            num-=64
        else:
            str +=0

        if num > 32:
            str += 1
            num-=32
        else:
            str +=0

        if num > 16:
            str += 1
            num-=16
        else:
            str +=0

        if num > 8:
            str += 1
            num-=8
        else:
            str +=0

        if num > 4:
            str += 1
            num-=4
        else:
            str +=0

        if num > 2:
            str += 1
            num-=2
        else:
            str+=0

        if num > 1:
            str += 1
            num-=1
        else:
            str +=0

    print('Decimal Binary\t\tOnes\tZeros')
    print('--------------------------------------')
    num.sort()
    print(num)


begin()

2 个答案:

答案 0 :(得分:3)

怎么样

n = 5
s = format(n, "b")
print(n, s, s.count("0"), s.count("1"))

以较少限制的方式执行此操作且代码少得多?

答案 1 :(得分:0)

有一个更简单的表达:

  
    
      

>>> bin(5)
      '0b1010'

    
  

'bin'可以在python 2.6之后使用