该算法可以被描述为这样一个结论:记 f(x) 表示 x 和 x-1 进行与运算所得的结果(即 f(x)=x & (x?1)),那么f(x) 恰为 x 删去其二进制表示中最右侧的 1 的结果。
leetcode 461.汉明距离
var hammingDistance = function(x, y) { let s = x ^ y, ret = 0; while(s != 0){ s &= s - 1; ret++; } return ret; };
leetcode 201.数字范围按位与
var rangeBitwiseAnd = function(m, n) { while (m < n) { // 抹去最右边的 1 n = n & (n - 1); } return n; };
leetcode 231.2的幂
var isPowerOfTwo = function(n) { return n > 0 && (n&(n-1)) == 0; };