若x=31,则比x大的最小的2次幂为32
若x=555,则比x大的最小的2次幂为1024
以上x均为十进制,若转化为二进制则很好理解
如x=1011000,那比x大的最小的2次幂为10000000
所以只需要找出x二进制数中最高位的1即可,再左移即可
def next2power(x):
while x&(x-1)!=0:
x=x&(x-1)
return x<<1
若x=31,则比x大的最小的2次幂为32
若x=555,则比x大的最小的2次幂为1024
以上x均为十进制,若转化为二进制则很好理解
如x=1011000,那比x大的最小的2次幂为10000000
所以只需要找出x二进制数中最高位的1即可,再左移即可
def next2power(x):
while x&(x-1)!=0:
x=x&(x-1)
return x<<1