Brian Kernighan 算法

该算法可以被描述为这样一个结论:记 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;
};
posted @ 2021-09-18 10:56  jerryfish  阅读(885)  评论(0编辑  收藏  举报