counting number of ones in binary representation of a number

Possible Duplicate:
Best algorithm to count the number of set bits in a 32-bit integer?

I want to find out how many 1s are there in binary representation of a number.I have 2 logic .

  •   int count =0;
    int no = 4;
    
    while(no!=0){
        int d = no%2;
        if(d==1)
            count++;
        no = no/2;
        str = str+ d;
    }
    
  • Now second logic is to keep on masking number iteratively with 1,2,4,8,32 and check if result is 1,2,4, 8..... Am not geting what should be ending condition for this loop.


  • Use Java API(java 5 or above).

    Integer.bitCount(int);
    Long.bitCount(long);
    

    NOTE: The above java methods are based on hacker's delight


    比以前的答案更快:(与1比特的数量成比例,而不是总比特数量)

    public class Foo {
      public static void main(String[] argv) throws Exception {
        int no = 12345;
        int count;
        for (count = 0; no > 0; ++count) {
          no &= no - 1;
        }
        System.out.println(count);
      }
    }
    

    Looks like c/c++/c#, if so you have shifting.. just loop to N-1 bits from 0 and use sum+=(value>>i)&1

    Ie: you always check the last/right most bit but move the binary representation of the number to the right for every iteration until you have no more bits to check.

    Also, think about signed/unsigned and any integer format. But you dont state how that should be handled in the question.

    链接地址: http://www.djcxy.com/p/72580.html

    上一篇: 整数的二进制表示中的零的数量

    下一篇: 计算一个数字的二进制表示的个数