在 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)
我需要创建将十进制数转换为二进制数的函数,并以这种方式可视化该过程:
例如 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)