原理:
因为2^n&(2^n-1)=0,所以x&(x-1)的效果是把最右边的 "1 "去掉了. 例如:
x=1010=1000+10
x-1=1000+10-1=1000+(10-1)
因为10&(10-1)=0 所以x&(x-1)=1010&1000=1000.
因为2^n&(2^n-1)=0,所以x&(x-1)的效果是把最右边的 "1 "去掉了. 例如:
x=1010=1000+10
x-1=1000+10-1=1000+(10-1)
因为10&(10-1)=0 所以x&(x-1)=1010&1000=1000.
所以最右边的 "1 "被去掉了.
因此,对于随意一个数每做一次x&(x-1)相当于把这个数的二进制形式中的最右边一位给去掉。
用处:判断一个数是不是2的N次幂形式,求一个数的二进制数中1的个数