x&(x-1)可以用来求出x是否为2幂次方数;当&的结果为0时,x原值是2幂次方数,否则就不是2幂次方数;
x=x&(x-1)即把x从低位开始的第一个1改成0.如1000,把1变成0,就是0000.1011,把1变成0,为1010.
如果x是2的幂次方,则x中只有高位一个1,此时x-1就是低位全是1,最高位为0,所以为0;
x&(x-1)可以用来求出x是否为2幂次方数;当&的结果为0时,x原值是2幂次方数,否则就不是2幂次方数;
x=x&(x-1)即把x从低位开始的第一个1改成0.如1000,把1变成0,就是0000.1011,把1变成0,为1010.
如果x是2的幂次方,则x中只有高位一个1,此时x-1就是低位全是1,最高位为0,所以为0;