登录 |  注册
首页 >  云计算&大数据 >  经典算法大全 · 实例详解 >  位运算:Brian Kernighan算法应用

位运算:Brian Kernighan算法应用

概念介绍

Brian Kernighan算法可以用于清除二进制数中最右侧的1。Brian Kernighan算法的做法是先将当前数减一,然后在与当前数进行按位与运算。

位运算2.png

x=x&(x-1)

位运算.png

利用此算法我们可以统计一个数字的二进制中的1的个数,即一比特数:

java

public int countOnes(int x) {
    int ones = 0;
    while (x > 0) {
        x &= (x - 1);
        ones++;
    }
    return ones;
}

c/c++

int countOnes(int x) {
    int ones = 0;
    while (x > 0) {
        x &= (x - 1);
        ones++;
    }
    return ones;
}

python

def countOnes(x: int) -> int:
    ones = 0
    while x > 0:
        x &= (x - 1)
        ones += 1
    return ones

Go

func onesCount(x int) (ones int) {
    for ; x > 0; x &= x - 1 {
        ones++
    }
    return
}


原文链接: https://www.yukx.com/arithmetic/article/details/2394.html 优科学习网位运算:Brian Kernighan算法应用

<<上一课程
推荐文章
  • 概念介绍BrianKernighan算法可以用于清除二进制数中最右侧的1。BrianKernighan算法的做法是先将当前数减一,然后在与当前数进行按位与运算。x=x&(x-1)利用此算法我们可以统计一个数字的二进制中的1的个数,即一比特数:javapublic int countOnes(int 
  • 概念介绍BrianKernighan算法可以用于清除二进制数中最右侧的1。BrianKernighan算法的做法是先将当前数减一,然后在与当前数进行按位与运算。x=x&(x-1)利用此算法我们可以统计一个数字的二进制中的1的个数,即一比特数:javapublic int countOnes(int 
  • Raft协议分区容忍的一致性协议的核心思想:一致性的保证不一定非要所有节点都保持一致,只要大多数节点更新了,对于整个分布式系统来说数据也是一致性的。Raft协议将概念分解成:Leaderelection、Logreplication、Safety。Raft把一致性协议划分为Leader选举、Memb
  • Paxos、Raft分布式一致性算法应用场景一文讲述了分布式一致性问题与分布式一致性算法的典型应用场景。作为分布式一致性代名词的Paxos算法号称是最难理解的算法。本文试图用通俗易懂的语言讲述Paxos算法。 Paxos算法简介Paxos算法是1990年LeslieLamport在论文《ThePar
  • 一、准备工作搭建hadoop伪分布式环境;见hadoop伪分布式搭建下载hive安装包;下载路径http://archive.apache.org/dist/hive/二、设置环境变量将安装包解压到/opt目录下$ tar xvzf apache-hive-0.13.0-bin.tar.gz设置环境
  • 什么是Hive?Hive是基于Hadoop的一个数据仓库工具,可以将HDFS中结构化的数据文件映射为一张表,并提供类SQL查询功能,本质是将HQL转化为mapreduce程序。mapreduce理解mapreduce数据以一条记录为单位经过map方法映射成KV,相同的key为一组,这一组数据用一次r
学习大纲