为什么在 Python 中使用模数和地板除法会返回一个反转的二进制数?

问题描述

我是编程新手,不明白为什么这段代码会返回输入的二进制数。

x = int(input())
while x > 0:
    print(x % 2,end='')
    x = x // 2

例如,当我输入 6 时,我希望它返回 0 (6 % 2 = 0,0 // 2 = 0),但它返回 011。

我表示正在考虑这一点,因为在一项作业中,我们应该使用此编码来帮助我们反转输出(同时使用字符串),但是当我不知道为什么时,我不知道如何反转它它有效。

解决方法

011 的答案对您的代码是正确的,只需通过跟踪即可。你从 6%2 开始,所以你得到 0。然后 6 floor 2 是 3,然后是下一次迭代的 x,所以它变成 3%2,即 1,最后一次迭代创建最后一个 1。记住你不改变打印语句中 x 的值,只改变最后一行。