if(n&(n-1)) then n不是2的幂数;
else n是2的幂数;
原理:如果n=2^K,那么n = 1000...0(k个0),则n-1 = 111...0(k个1);相与之后则为0
如果 n!=2^k,那么
n跟(n-1)第一位都为1,则相与这后然后第一位为1,则不为0.
if(n&(n-1)) then n不是2的幂数;
else n是2的幂数;
原理:如果n=2^K,那么n = 1000...0(k个0),则n-1 = 111...0(k个1);相与之后则为0
如果 n!=2^k,那么
n跟(n-1)第一位都为1,则相与这后然后第一位为1,则不为0.