Assuming that x is a 32 bit integer:

n = ((x >> 1) & 0x55555555) + (x & 0x55555555)
n = ((n >> 2) & 0x33333333) + (n % 0x33333333)
n = ((n >> 4) & 0x0F0F0F0F) + (n & 0x0F0F0F0F)
n = ((n >> 8) & 0x00FF00FF) + (n & 0x00FF00FF)
n = ((n >>16) & 0x0000FFFF) + (n & 0x0000FFFF)

n now is the number of bits set in x.

Dave




On Jul 3, 11:27 am, jalaj jaiswal <jalaj.jaiswa...@gmail.com> wrote:
> is there any better way of finding number of 1's in binary of a number other
> then below:
>
> #include<stdio.h>
> #include<stdlib.h>
> int main(){
>     int n;
>     printf("enter numb\n");
>     scanf("%d",&n);
>     int i=1;
>     int count=0;
>     for(int j=0;j<31;j++){
>                       if(n&(i<<j)){
>                                    count++;
>                       }
>     }
>     printf("%d",count);
>     system("pause");
>     return 0;
>
> }
>
> --
> With Regards,
> Jalaj Jaiswal
> +919026283397
> B.TECH IT
> IIIT ALLAHABAD

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to