Another approach!! while(x) { x=x&(x-1); count++; }
On Sun, Aug 28, 2011 at 2:26 PM, Nikhil Gupta <nikhilgupta2...@gmail.com>wrote: > Here is a small piece of program which counts the number of bits set in a > number. I found it online somewhere. > InputOutput00(0000000)52(0000101)73(0000111) > > *int* CountBits (*unsigned* *int* x ) > > { > *static* *unsigned* *int* mask[] *=* { 0x55555555, > > 0x33333333, > 0x0F0F0F0F, > 0x00FF00FF, > > 0x0000FFFF } ; > *int* i ; > *int* shift ; /* Number of positions to shift to right*/ > *for* ( i *=*0, shift *=*1; i *<* 5; i *++*, shift **=* 2) > > x *=* (x *&* mask[i ])*+* ( ( x *>>* shift) *&* mask[i]); > > *return* x; > } > > Can anyone explain how this is working? > > -- > Nikhil Gupta > Senior Co-ordinator, Publicity > CSI, NSIT Students' Branch > NSIT, New Delhi, India > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to algogeeks@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. > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@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.