I'm looking for a Pythonic way to count the number of trailing zeros in the binary representation of a positive integer n
(which will indicate the highest power of 2
which divides n
without remainder).
A simple solution:
def CountZeros(n):
c = 0
while (n % 2) == 0:
n /= 2
c += 1
return c
But in order to do it in a more Pythonic manner, I think that I can make use of:
bin(n)[2:]
, which gives the binary representation of n
bin(n)[:1:-1]
, which gives the reversed binary representation of n
So my question can be reduced to counting the number of trailing zeros in a string.
Is there any single-statement way to do this?
My ultimate goal is a Pythonic way for computing the highest power of 2
which divides n
without remainder, so any ways to do this not by counting the trailing zeros in a string are also appreciated.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…