计算二进制数末尾尾随0数的有效代码

2024-03-29 12:43:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一种在二进制数中查找尾随零数的方法,并在C(link)中找到了一种解决方案。我正在寻找Python的解决方案

Binary Input -> 1000
Output: 3

Binary Input -> 101101001100
Output: 2

Binary Input -> 1010001010000
Output: 4

Binary Input -> 100000001
Output: 0

有没有一种有效的方法可以在不将二进制数作为字符串进行迭代或使用字符串方法进行过滤的情况下执行此操作?基本上,我可能有大量非常非常大的二进制数,所以我试图找到比简单地将其作为字符串进行迭代更有效的方法


编辑:

这是我的尝试-

def trailingzeros(l):
    count = 0
    a = [i for i in str(l)]
    for i in reversed(a):
        if i=='0':
            count+=1
        else:
            break
    return count

注意:我正在寻找一种利用输入的二进制特性的解决方案


Tags: 方法字符串in编辑forinputoutputdef
2条回答

您可以使用python位运算符:

def findTrailing0(num):
    count = 0
    lastBit = 0
    while num != 0:
        lastBit = num & 0x1
        if lastBit != 0:
            break
        count += 1
        num >>= 1
    return count
n = 0b1010001010000

count = 0
while n:
    if (n&1):
        break
    n >>= 1
    count += 1

print(count)

印刷品:

4

相关问题 更多 >