如何通过重复除以 2 将二进制转换为二进制?

how to convert denary to binary by repeatedly dividing by 2?

我遇到了一个问题,我必须编写一个函数,使用重复除以二算法将二进制数转换为二进制数。步骤包括:

-要转换的数除以2。

-除法的余数是下一个二进制数字。数字被添加到序列的前面。

-结果被截断,以便下一次除以二的输入始终是整数。

-算法一直持续到结果为0。

请点击下面的 link 查看输出应该是什么:https://i.stack.imgur.com/pifUO.png

到目前为止,这是我的代码:


def dentobi(user):
  denary = user
  divide = user / 2
  remainder = user % 2
  binary = remainder
  
  while user != 0:
    print("Denary:", denary)
    print("Divide by 2:", divide)
    print("Remainder:", remainder)
    print("Binary:", binary)
    result = str(binary) + str(remainder)
    print(result)
    
user = int(input("Please enter a number: "))
dentobi(user)

当数字没有余数时我的输出是:

请输入一个数字:20 第纳尔:20 除以 2:10.0 余数:0 二进制:0 当数字确实有余数时输出:

请输入一个数字:20 第纳尔:20 除以 2:10.0 余数:0 二进制:0

这是我想要发生的事情的一部分,但是我需要它一遍又一遍地迭代,直到实际值达到零。

我每次都需要一些帮助来编写余数以放在前面,感谢您的建议。

有很多不同的方法可以做到这一点。这是一个:

def dentobi(n):
    result = ''
    while n > 0:
        result =  str(n % 2) + result
        n //= 2
    return result or '0'


print(dentobi(26))

输出:

11010

注:

这将不适用于负值