一路面试题求解

一道面试题求解最近看到一道题目如下:int test(int value){int count 0while(value){count++valuevalu

一道面试题求解
最近看到一道题目如下:


int test(int value)
{
  int count =0;
  while(value)
  {
  count++;
  value=value & (value - 1);
  }
   
  return count;
}

实际跑一下,得出的结果是输入参数的二进制中有几个1,count就是几。 
但有什么数学公式可以推论出这个结果吗?

[解决办法]
编程之美上的吧 你试着把value转成二进制 来& 一下就知道了。
[解决办法]
value=value & (value - 1);
这句话的实质就是把最低位的1清零。
那么清几次零,就是有几个1咯。