二进制中1的个数

原创 2015年07月06日 16:15:04

题目10:

惊恐解法一:右移 

int NumberOf1(int n)

{

        int count=0;

        while(n)

        {

              if(n&1)

                     count++;

             n=n>>1;

        }

         return count;

}

出现的问题:当该数字是负数时,会陷入死循环。

尴尬常规解法



int   NumberOf1(int n)

{

      int  count=0;

      unsigned int flag=1;

      while(flag)

      {

             if(n&flag)

                   count++;

              flag=flag<<1;//左移

      }

       return count;

}

尴尬解法三:

     解法二中循环移动的次数等于整数二进制的位数。以下是整数的二进制有几个1就移动几次的方法:

将一个整数减去1,就是把该二进制的最右边的1变


边的1变成了0,结果刚好是1000。


代码:

int  NumberOf1(int n)

{

        int count=0;

        while(n)

        {

              ++count;

              n=(n-1)&n;

        }

        return count;

}





快速统计二进制中1的个数(分析篇)

今天做了一道题,发现n&=(n-1)这个式子很好奇,然后试着算了一遍发现它竟然能够快速统计二进制1的个数,特此拿来分享一下。 首先,分析一下该式子,先可以简化为 n=n&(n-1); 我...
  • u013243347
  • u013243347
  • 2016年08月16日 15:12
  • 1386

python版统计文件二进制内容中的0和1个数

知乎上看到一个问题http://www.zhihu.com/question/20289032,看到票数最高的回答中python程序如下: import struct, os filename, co...
  • hebliyao
  • hebliyao
  • 2015年04月05日 21:58
  • 1269

计算一个数的二进制位中1的个数的方法总结

方法一、通过移位分别判断各个位 int bit_count(unsigned int n) { int count;         for(count=0;n;n>>=1) { count+=n&1...
  • yangshuangtao
  • yangshuangtao
  • 2015年09月26日 20:05
  • 1870

求二进制数中1的个数.pdf

  • 2011年12月03日 12:13
  • 257KB
  • 下载

判断一个正整数二进制表示中1的个数/////////////质数判断

一、一个正整数二进制表示中“1”个数 java代码实现 //算法一----快速法 public Class Solution { public int NumberOf1(int n)...
  • hefenglian
  • hefenglian
  • 2018年01月16日 11:51
  • 2

程序员面试题精选100题(22)-整数二进制表示中1的个数[算法]

题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。 分析:这是一道很基本的考查位运算的面试题。包括微软在内的很多公司都曾采用过...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年02月23日 12:19
  • 932

统计一个整数n的二进制表示中1的个数的几种解法

统计一个整数n的二进制表示中1的个数; 分析:此题有多种解法. 1. 除2取余法:求一个整数的二进制的表示是,用的方法是除2取余。对于本题,只是统计一下余数为1的个数而已。 2. 位模式法+移位...
  • wzb56
  • wzb56
  • 2012年10月29日 18:37
  • 1667

关于求二进制数中1的个数的算法

原文出处:http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html   算法-求二进制数中1的个数 问题描述 ...
  • lsk1124981644
  • lsk1124981644
  • 2015年02月03日 15:04
  • 330

找出二进制表示中1的个数相同,且大小最接近的那两个数

public int getNext(int n) { /* 计算c0和c1 */ int c=n; int c0=0; int c1=0; while(((c&1)==0) && (...
  • wangfengfan1
  • wangfengfan1
  • 2015年08月24日 21:33
  • 1146

剑指offer面试题10:二进制中1的个数(与位运算有关)

题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2。 分析: 1、可以用一个二进制表示时仅有1位为1的整...
  • SunCherryDream
  • SunCherryDream
  • 2017年05月19日 15:01
  • 196
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二进制中1的个数
举报原因:
原因补充:

(最多只允许输入30个字)