【问题标题】:Whats wrong with my decimal to binary converter?我的十进制到二进制转换器有什么问题?
【发布时间】:2019-12-16 14:25:57
【问题描述】:

我必须在不使用列表的情况下创建一个十进制到二进制转换器,但我的代码给出了错误的值,我不知道为什么。

def DecToBin(val):
    bine = 128
    counter = 8
    coded = 10
    binary = 0
    while val > 0 and bine != 0.5:
        if val < bine:
            bine = bine/2
            counter -= 1
        elif val > bine:
            val = val - bine
            binary = binary + (coded ^ counter)
            counter -= 1
            bine = bine/2
        elif val == bine:
            binary = binary + (coded ^ counter)
            counter = 0
            val = 0
    return binary

当输入值为 3 时,它给我 19。

【问题讨论】:

  • 您的标题是二进制 -> 十进制,但您的方法名称是十进制 -> 二进制。是哪个?
  • 是的,它的十进制转二进制是我的错

标签: python-3.x binary converters


【解决方案1】:

你有两个问题。首先,python 幂运算符是** 而不是^。其次,bine 应该是 256,而不是 128 给定您的计数器值。您的代码应如下所示:

def DecToBin(val):
    bine = 256
    counter = 8
    coded = 10
    binary = 0
    while val > 0 and bine != 0.5:
        if val < bine:
            bine = bine/2
            counter -= 1
        elif val > bine:
            val = val - bine
            binary = binary + (coded ** counter)
            counter -= 1
            bine = bine/2
        elif val == bine:
            binary = binary + (coded ** counter)
            counter = 0
            val = 0
    return binary

【讨论】:

  • 另请注意,这仅适用于小于或等于 256 的十进制值。我建议将 bine = 128 更改为 bine = 2**32counter = 8 更改为 counter = 32
猜你喜欢
  • 2021-01-03
  • 2021-11-08
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 2012-12-17
  • 1970-01-01
  • 2020-06-25
相关资源
最近更新 更多