代码改变世界

判断10进制转2进制后有几个1

2009-07-23 00:27  Logic0  阅读(178)  评论(0编辑  收藏  举报
我顶 字号:

unsigned long fun(unsigned long data)
{
      unsigned long  count =  0 ;
      unsigned long  x = data;
      while(x)
     {
           count++;
           x =  x  &   (x - 1);
   }
   return count;
}


或者

int s=0;
for(int n=0;n<sizeof(x)*8;n++)
{
      if( x & (1 << n))
          s++;
}