首页 > 编程语言 > 详细

Brian Kernighan 算法

时间:2021-09-23 07:39:54      阅读:20      评论:0      收藏:0      [点我收藏+]

该算法可以被描述为这样一个结论:记 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;
};

Brian Kernighan 算法

原文:https://www.cnblogs.com/jerryfish/p/15307637.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!