从十进制转换为二进制 - python

时间:2016-01-11 00:58:08

标签: python-2.7

我在编写这段代码时遇到了问题。我正在尝试转换整数输入并使用其等效的二进制基数打印输出。例如,对于5,它应该删除'101'的输出,但它只是打印'10',就像它没有考虑最后一个数字。如有任何意见,将不胜感激

T = raw_input()
for i in range(0, int(T)):
    n = raw_input()
    dec_num = int(n)
    cnv_bin = ''
    while dec_num//2 > 0:        
        if dec_num%2 == 0:
            cnv_bin += '0'
        else:
            cnv_bin += '1'
        dec_num = dec_num//2
    print cnv_bin[::-1]

3 个答案:

答案 0 :(得分:1)

while dec_num//2 > 0:

应该是:

while dec_num > 0:

第一次循环,5//2==2,所以它继续 第二次循环,2//2==1,所以它继续 第三次,1//2==0并且循环退出而不处理最后一位。

此外,您只需执行以下操作即可显示二进制数字:

print format(dec_num,'b')

格式化字符串版本:

print '{0} decimal is {0:b} binary.'.format(5)

答案 1 :(得分:0)

为什么不使用内置函数bin()? 例如:

bin(5)

输出

0b101

如果您不想要前缀(0b),则可以将其排除。

bin(5)[2:]

希望有所帮助!

答案 2 :(得分:0)

errors