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.