我如何用前导零计算二进制数?
How would i count up in binary with leading zeros?
所以我想用二进制计数,但在示例中保留前导零以计数到 6,它看起来像这样:
0000
0001
0010
0011
0100
0101
0110
我有这段代码,但它只能达到 repeat=4 指定的特定数量,我需要它一直运行直到找到特定数字。
for i in itertools.product([0,1],repeat=4):
x += 1
print i
if binNum == i:
print "Found after ", x, "attempts"
break
没关系伙计们,我找到了答案!
我只是像这样把它放在一个 while 循环中:
while found == 0:
repeatTimes += 1
for i in itertools.product([0,1],repeat=repeatTimes):
x += 1
print i
if binNum == i:
found = 1
pos = x
break
没有前导零
n=5 # End number
i=0 # index var
while i < n:
print format(i, "04b")
i+=1
上面的例子会显示 0 到 5。04b
给你 4 个字符作为结果(带前导零)。
输出:
0000
0001
0010
0011
0100
带前导零
while( i <= n ):
len_bin = len(bin(i)[2:])
if(len_bin%4 != 0):
lead = 4 - len_bin % 4
else:
lead = 0
print format(i, "0"+str(lead+len_bin)+"b")
i+=1
上面的代码将从 i
到 n
并显示带有前导零的二进制文件。
更像 pythonic 的方法是
for k in range(7): #range's stop is not included
print('{:04b}'.format(k))
这使用 Python 的字符串格式化语言 (https://docs.python.org/3/library/string.html#format-specification-mini-language)
要以四个为一组打印更大的数字,请使用类似
的方法
for k in range(20): #range's stop is not included
# https://docs.python.org/3/library/string.html#format-specification-mini-language
if len('{:b}'.format(k)) > 4:
print(k, '{:08b}'.format(k))
else:
print('{:04b}'.format(k))
您甚至可以使用字符串格式化语言本身和等式 y = 2^x
动态调整格式化术语 '{:08b}'
以适用于任何整数:
from math import ceil
for k in range(300):
print(k, '{{:0{:.0f}b}}'.format(ceil((len(bin(k))-2)/4)*4).format(k))
所以我想用二进制计数,但在示例中保留前导零以计数到 6,它看起来像这样:
0000
0001
0010
0011
0100
0101
0110
我有这段代码,但它只能达到 repeat=4 指定的特定数量,我需要它一直运行直到找到特定数字。
for i in itertools.product([0,1],repeat=4):
x += 1
print i
if binNum == i:
print "Found after ", x, "attempts"
break
没关系伙计们,我找到了答案!
我只是像这样把它放在一个 while 循环中:
while found == 0:
repeatTimes += 1
for i in itertools.product([0,1],repeat=repeatTimes):
x += 1
print i
if binNum == i:
found = 1
pos = x
break
没有前导零
n=5 # End number
i=0 # index var
while i < n:
print format(i, "04b")
i+=1
上面的例子会显示 0 到 5。04b
给你 4 个字符作为结果(带前导零)。
输出:
0000
0001
0010
0011
0100
带前导零
while( i <= n ):
len_bin = len(bin(i)[2:])
if(len_bin%4 != 0):
lead = 4 - len_bin % 4
else:
lead = 0
print format(i, "0"+str(lead+len_bin)+"b")
i+=1
上面的代码将从 i
到 n
并显示带有前导零的二进制文件。
更像 pythonic 的方法是
for k in range(7): #range's stop is not included
print('{:04b}'.format(k))
这使用 Python 的字符串格式化语言 (https://docs.python.org/3/library/string.html#format-specification-mini-language)
要以四个为一组打印更大的数字,请使用类似
的方法for k in range(20): #range's stop is not included
# https://docs.python.org/3/library/string.html#format-specification-mini-language
if len('{:b}'.format(k)) > 4:
print(k, '{:08b}'.format(k))
else:
print('{:04b}'.format(k))
您甚至可以使用字符串格式化语言本身和等式 y = 2^x
动态调整格式化术语 '{:08b}'
以适用于任何整数:
from math import ceil
for k in range(300):
print(k, '{{:0{:.0f}b}}'.format(ceil((len(bin(k))-2)/4)*4).format(k))