我使用下面的手动方法,恰好找到给定整数的二进制值的高位= 1。
例如:当我们输入85时,第6,第4,第2和第0位为高,我按顺序将输出作为6 4 2 0
。实际上我需要这样的输出:[6,4,2,0]
。任何人都可以帮助我吗?
def high_bit(num):
for i in range(0,100):
if (num/(pow(2,i)))==1:
print i
num = (num - (pow(2,i)))
y = high_bit(num)
return y
答案 0 :(得分:0)
我发现你的递归有点混乱,但它可以工作:
def high_bit(num, lst=None):
if lst == None:
toplevel = True
lst = []
else:
toplevel = False
for i in range(0,100):
if (num/(pow(2,i)))==1:
lst.append(i)
num = (num - (pow(2,i)))
high_bit(num, lst)
if toplevel:
print lst
high_bit(85) # prints [6, 4, 2, 0]
我建议迭代地这样做。