首页 > 解决方案 > 使用函数将十进制转换为二进制

问题描述

我正在尝试通过函数获取输入并以二进制形式返回数字。到目前为止,这是我的代码,我不太确定如何进行。对于评论,我理解bin()是一个内置函数,但我需要创建自己的二进制输出方式。

另请注意:我已经更新了代码,并且我已经将所有 1 正确添加到输出中,但我不确定如何添加 0。

def dectobin(x):
    e=0
    output=""
    p=0
    while p <= x:
        p=2**e
        e+=1
        if 2**e >= x:
            x = x - 2**(e-1)
            e=0
            p=0
            p=2**e
            output+=str(1)
        if 2**e > x:
            p = p//2
            if p > x:
                p=p//2
                output+=0
            x = x = p
            output+=1
    return output

print(dectobin(99))

标签: python

解决方案


此功能内置在 Python 中。bin是名字。这是帮助消息:

模块内置函数 bin 的帮助:

bin(number, /) 返回整数的二进制表示。

>>> bin(2796202)
'0b1010101010101010101010'

这是我为自己的解决方案提出的:

def binary(n):
  if n == 0:
    return '0'
  orders = []
  i = 1
  while i <= n:
    orders.append(i)
    i *= 2
  orders = orders[::-1]  # decreasing powers of n

  # for each `order` we need a 0 or a 1
  b = ''
  for o in orders:
    if o <= n:
      b += '1'
      n -= o
    else:
      b += '0'
  return b

我的检查是(效率低下,但是¯_(ツ)_/¯):

assert(all(bin(n)[2:] == binary(n) for n in range(1025)))

推荐阅读