在 python 中可视化的十进制到二进制

Decimal to binary with visualisation in python

我需要创建将十进制数转换为二进制数的函数,并以这种方式可视化该过程:

例如 15:

15|1
7 |1
3 |1
1 |1

number 15 in binary is 1111 (from bottom to up).

我一直在尝试这样做,但我什至不知道我的功能是否正确。我知道 python 有一个 "bin" 内置函数,但它不可能用于该可视化(或者我错了吗?)。

我的最后一个代码:

FinalList = []
dividedList = []

number = 29
while number != 1:
    divided = number%2
    number = int(number/2)
    FinalList.append(divided)
    dividedList.append(number)
    print(divided)

if number == 0:
    print(0)
    FinalList.append(divided)
    dividedList .append(0)
else:
    print(1)
    FinalList.append(1)
    dividedList.append(1)


print(FinalList)
print(dividedList)

有人可以帮我吗?

我对数字 230 的输出:

[0, 1, 1, 0, 0, 1, 1, 1]

[115, 57, 28, 14, 7, 3, 1, 1]

应该是:

[0, 1, 1, 0, 0, 1, 1, 1]

[230,115, 57, 28, 14, 7, 3, 1]

遍历数字的二进制表示形式的枚举,将余数转换回十进制

number = 230
str = "{:b}".format(number)
b = []
d = []
for i,x in enumerate(str):
  b.append(x)
  d.append(int(str[i:],2))
print b
print d

对于数字 = 15

['1', '1', '1', '1']
[15, 7, 3, 1]

数量 = 230

['1', '1', '1', '0', '0', '1', '1', '0']
[230, 102, 38, 6, 6, 6, 2, 0]

希望对您有所帮助!

对您的代码稍作改动

FinalList = []
dividedList = []

number = 29

print(bin(number))

while number != 1:
    _new_number, divided =  divmod(number, 2)
    print("{}|{}".format(number, divided))
    number = _new_number
    FinalList.append(divided)
    dividedList.append(number)

if number == 0:
    print('0|0')
    FinalList.append(divided)
    dividedList .append(0)
else:
    print('1|1')
    FinalList.append(1)
    dividedList.append(1)


print(FinalList[::-1]) # should match with the `bin` result
print(dividedList)