n=n&(n-1)将n的二进制码中的最后一位变为0。分一下两种情况讨论: n最后一位为1,也就是n=XXXX1,n&(n-1)与n-1效果相同,都将得到XXXX0。n的最后一位为0,也就是n=XXXX10000,n-1=XXXX01111,按位与得到XXXX00000。