每执行一次x = x&(x-1),会将x用二进制表示时最右边的一个1变为0,因为x-1将会将该位(x用二进制表示时最右边的一个1)变为0。
比如下面
int x=9; int i; for ( i = 0; i < x; i++) { x &= (x-1); }
执行结束 i = 2,因为9=1001,有2个1;类似如果x = 2013, 则 i = 9;
应用:
1、将x转化为2进制,看含有的1的个数。
2、判断x是否是2的幂。
原文:http://www.cnblogs.com/JesusAlone/p/3632618.html