【问题标题】:Converting Integer to Binary return wrong values将整数转换为二进制返回错误值
【发布时间】:2016-07-22 03:03:15
【问题描述】:

我创建了一个数字转换器,我需要将整数转换为二进制。当我尝试转换整数12。它给了我一个值0 0 0 0 0 1 0 0 而不是0 0 0 0 1 1 0 0

代码:

number = int(input("Enter a integer between 255 and 0: "))
    if (number > 255) or (number < 0):
        print("Please input less than 255!!!")
    else:
        a = False

        for myCounter in range (8): 

            if (number % 2 == 1):#if remainder is equal to 1
                myResult = ' 1 ' + myResult#add '1' character to the string

            else: 
                (number % 2 == 0)#if input has no remainder
                myResult = ' 0 ' + myResult#add '0' character to the string

            number = number / 2

        print("Binary equivalent is: %s" %myResult)

如何使用 ROUND_HALF_UP 将 0.5 舍入到 1?输出如下。

任何帮助将不胜感激!

【问题讨论】:

  • math.ceil(0.5) -> 1.0 这就是你想要的吗? (或者只是添加 0.5 并截断:int(n+0.5)
  • 试试number = number //2
  • 请不要在if中使用括号
  • @RicardoCruz 不,不是。

标签: python python-3.x binary integer


【解决方案1】:

代码在 Python 2.7 中运行良好。对于Python 3.x,请尝试将number = number/2 替换为number=number//2

number = 12
a = False
myResult  = ''
for myCounter in range (8): 

    if (number % 2 == 1):#if remainder is equal to 1
        myResult = ' 1 ' + myResult#add '1' character to the string

    else: 
        (number % 2 == 0)#if input has no remainder
        myResult = ' 0 ' + myResult#add '0' character to the string

    number = number // 2

print("Binary equivalent is: %s" %myResult)

【讨论】:

  • 感谢这对我有帮助!为什么我应该使用Floor Division 而不是Division Symbol
  • @MiaLegaspi 是的 :)
  • 对于那些更倾向于使用按位运算的人,myResult = str(number &amp; 1) + myResult; number &gt;&gt;= 1 也会这样做。
猜你喜欢
  • 2019-02-02
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 2012-12-10
  • 2017-07-13
  • 2018-10-10
  • 2016-01-08
  • 2012-05-02
相关资源
最近更新 更多