二进制中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的个数.pdf

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

poj3252 数位dp(所有比n小的二进制位0的个数不少于1的个数)记忆化搜索

http://poj.org/problem?id=3252 Description The cows, as you know, have no fingers or thumbs an...

c语言:统计整数二进制表示中1的个数(汉明重量)

问题描述:对于一个字节的无符号整型变量,求其二进制表示中1的个数。 第一次见到这个问题应该是icephone第一次例会的时候,问题虽然简单,但也值得深思。 后来查阅资料的时候才知道这个问题有个正式...

Java算法之二--二进制1的个数问题--位运算

大家好我是M1ko,今天给大家分享的算法是关于二进制运算的问题,说到二进制,一个程序员第一个反应肯定是位运算,这一方面也一直是自己的薄弱点,好的废话不多说开车出发。 首先上题目地址:赛码网 上题目...

“求二进制数中1的个数”

【一】“求二进制数中1的个数”的几种方法 转自[http://blog.csdn.net/justpub/article/details/2292823]   求二进制中1的个数。对于一个字...
  • yockie
  • yockie
  • 2012年07月25日 17:31
  • 1928

二进制中1的个数以及时间比较

public class Algorithm { public static void main(String[] args) { long t1 = System.currentTimeMi...

求二进制中1的个数----Java实现

问题描述:给出一个整数,输出这个整数的二进制表示中1的个数。 算法思路1:(移位)第一步:判断二进制表示中最后一位是不是1,如果是1,计数器加1,否则不加;第二部:丢掉最后一位,继续递归第一步,直到这...
  • Emira_J
  • Emira_J
  • 2016年04月22日 09:20
  • 646

整数二进制展开后1的个数(《编程珠玑》第九章)

转自博客:http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html

位运算:二进制中1的个数12

位运算:是把数字用二进制表示之后,对每一次是0或1的运算。乘除效率低,实际编程中尽可能的用移位运算代替乘除法。世界上有10中人,一种人知道二进制,而另一种人不知道二进制……五种位运算:与、或、异或、左...

二进制中1的个数(剑指offer)

二进制中1的个数本Markdown编辑器使用[StackEdit][6]修改而来,用它写博客,将会带来全新的体验哦: 剑指offer中的二进制中1的个数问题 代码如下: class Solution...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二进制中1的个数
举报原因:
原因补充:

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