求二进制中1的个数

来源:互联网 发布:怎么在淘宝上拿货的 编辑:程序博客网 时间:2024/05/16 00:46

以10 100 010为例;

第一次除以2时,商为1 010 001,余为0。

第二次除以2时,商为101 000,余为1。

因此,可以考虑利用整型数据除法的特点,通过相除和判断余数的值来进行分析。于是有了如下的代码。

public class Main {    public static void main(String[] args) {        Main main = new Main();        System.out.println(main.count(7));    }    int count(int v) {        int num = 0;        while (v != 0) {            if (v % 2 == 1) {                num++;            }            v /= 2;        }        return num;    }}

亲测正确

public class Main {    public static void main(String[] args) {        Main main = new Main();//        System.out.println(main.count(7));        System.out.println(main.count2(7));    }    //方法1    int count(int v) {        int num = 0;        while (v != 0) {            if (v % 2 == 1) {                num++;            }            v /= 2;        }        return num;    }    //方法2    int count2(int n) {        int c = 0;        for (c = 0; n != 0; ++c) {            n &= (n - 1);        }        return c;    }}







原创粉丝点击