美文网首页
计算一个二进制数中的1的个数

计算一个二进制数中的1的个数

作者: senninha | 来源:发表于2017-04-26 20:23 被阅读69次

计算一个二进制数中的1的个数

1.循环法

首先二进制数有这么一个性质,当一个数减去1再与原来的数字去&运算,得到的结果其实是将原来的那个数字的最右边的那个1变成0后的数字。
举个粒子:
10101010
10101010 - 1 = 10101001
10101010 & 10101001 =
10101000
所以执行一次这样的运算就把二进制数的一个1给消灭了。。。
运用这样的性质还可以去解决其他的移位问题
来上代码:

public static int bitNums0(int i){
        int count = 0;
        while(i != 0){
            i = (i - 1) & i;
            count++;
        }
        return count;

2. 不使用循环的方法

01010111

  1. 先把一个二进制数分为两个两个一组,01,01,01,11,
    组内的高位和低位相加,
    然后再四个分为一组,组内高二位与第二位相加
    ...以此,最后的那个就是结果。
public static int bitNums(int i){
        int bit2 = 0x55_55_55_55;//0101 0101 0101...
        int bit4 = 0x33_33_33_33;//0011 0011 0011...
        int bit8 = 0x0f_0f_0f_0f;    //0000 1111 0000 1111...
        int bit16 = 0x00_ff_00_ff;  //0000 0000 1111 1111...
        int bit32 = 0x00_00_ff_ff;  //0000 0000 0000 0000...1111 ...
        
        i = ((i >>> 1) & bit2) + (i & bit2);
        i = ((i >>> 2) & bit4) + (i & bit4);
        i = ((i >>> 4) & bit8) + (i & bit8);
        i = ((i >>> 8) & bit16) + (i & bit16);
        i = ((i >>> 16) & bit32) + (i & bit32);
        
        return i;
    }

相关文章

  • 计算一个二进制数中的1的个数

    计算一个二进制数中的1的个数 1.循环法 首先二进制数有这么一个性质,当一个数减去1再与原来的数字去&运算,得到的...

  • 剑指offer----位运算

    1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放...

  • python全栈学习之原码和补码(3)

    一、机器数与真值:1、机器数:一个数在计算机中的二进制表示形式,叫这个数的机器数。机器数是带符号的,在计算机用一个...

  • 二进制学习

    1.机器数 一个数在计算机中的二进制表现形式,叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符...

  • Java 原码、反码、补码 详解

    1. 机器数 一个数在计算机中的二进制表现形式,叫做这个数的机器数。一个数的最高位表示符号,0是正数,1是负数。 ...

  • 原码、反码、补码

    关于原码、反码、补码 一、机器数和真值 1.机器数 一个数在计算机中的二进制形式,叫做这个数的机器数。机器数是带符...

  • 原码反码和补码(转载)

    机器数 一个数在计算机中的二进制表示形式,叫做这个数的机器数,机器数是带符号的,在计算机中用一个数的最高位存放符号...

  • 算法(一 原码,反码和,补码)

    一, 机器数和真值 机器数一个数在计算机中的二进制表示形式,叫做这个数的机器数. 用二进制数的最高位存放符号,正数...

  • 1.3 题解:计算无符号二进制数中1的个数

    Chapter1: 位运算的奇技淫巧 3. 题解:计算无符号二进制数中1的个数 题目 计算无符号整数的二进制表示中...

  • Leetcode-338:比特位计数

    描述:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数...

网友评论

      本文标题:计算一个二进制数中的1的个数

      本文链接:https://www.haomeiwen.com/subject/rzswzttx.html