Десятичное в двоичное с визуализацией в Python - PullRequest
1 голос
/ 27 октября 2019

Мне нужно создать функцию для преобразования десятичных чисел в двоичные и визуализировать этот процесс следующим образом:

, например, 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]

Ответы [ 2 ]

1 голос
/ 27 октября 2019

Надеюсь, это поможет!

Незначительные изменения в вашем коде

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)
1 голос
/ 27 октября 2019

перебирает перечисление двоичного представления числа, преобразуя остаток обратно в десятичное число

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]
...