美文网首页
如何快速计算一个整数二进制中1的个数

如何快速计算一个整数二进制中1的个数

作者: 狗语 | 来源:发表于2019-01-26 22:53 被阅读0次

    首先在java中整数的二进制表示是31位最高位32位是符号位,所以我们可以采用一个巧妙的办法,每次去比对一个整数的二进制位的每一位是否是1 ,我们可以采用与运算(&)去比较,与运算是二进制运算只有2个1才为1,其余全为0所以可以通过下面这一段代码进行判断。

    public int NumberOf1(int n) {

            int sum = 0 ;

            int a = 1 ;

            while(a != 0){

                if((n & a)!= 0 ) sum ++ ;

                a = a<<1 ;

            }

            return sum ;

        }

    利用sum来记录1个个数,当a为1时对应的二进制是1,所以比较的是第一位的数是否为1,当a进行右移运算,则a变为2了对应的二进制是10则,会比较第二位是否为1,依次类推,进行计算,总体来说这个计算速度是比较快的,因为计算基本都是位运算计算速断较快,所以这是一种比较快的统计整数中1个数的方法。

    相关文章

      网友评论

          本文标题:如何快速计算一个整数二进制中1的个数

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