当时想都没想,觉得这题很容易,直接写代码如下:

 

unsigned int FindOneInNumber_01(unsigned int x)
{
    unsigned 
int n;
    
for(n=0; x; x >>= 1)
        
if (x & 1) n++;
    
return n;
}

 

回来上坛子里一看,觉得这方法不是太好,有高手的写法:

 

1 unsigned int FindOneInNumber_02(unsigned int x)
2 {
3     unsigned int n;
4     for(n=0; x; n++)
5         x &= x-1;
6     return n;
7 }

 

区别是第二中方法不用判断条件转跳,当大量数据处理是优势就出来了

相关文章: