从右向左数,找到第一个1,把1后面的所有的数字都变为0。如x=1000110,x&(x-1)=1000100就是把x右边的第一个1后面的数变为0(包括1)。如果10000的话,结果就是00000了!这样就可以利用这个特性来计算这个十进制书转化为二进制数有多少个1!
也可用来判断一个数是否是2的N次幂,如果x = x&(x-1)的结果为0则说明x是2的N次幂,否则不是。
从右向左数,找到第一个1,把1后面的所有的数字都变为0。如x=1000110,x&(x-1)=1000100就是把x右边的第一个1后面的数变为0(包括1)。如果10000的话,结果就是00000了!这样就可以利用这个特性来计算这个十进制书转化为二进制数有多少个1!
也可用来判断一个数是否是2的N次幂,如果x = x&(x-1)的结果为0则说明x是2的N次幂,否则不是。