n&(n-1)
用到了按位与运算符,这一算法的用途是判断此数字二进制是否只含有唯一一个1
。当满足该条件时,此式值为0
。
按位与正如字面意思,按二进制的每位进行与运算。
例如,n = 1000(Bin)
的情况下,
1000 // n
& 0111 // n - 1
------
0000 // n & ( n - 1 )
此时n&(n-1)=0
。
若n = 1100(Bin)
,
1100 // n
& 1011 // n - 1
------
1000 // n & ( n - 1 )
此时n&(n-1)≠0
。