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

2024-10-01 13:45:34 发布

您现在位置: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]

Tags: 函数infromnumberis过程可视化方式
2条回答

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

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)

相关问题 更多 >