首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一路面试题求解

2012-09-19 
一道面试题求解最近看到一道题目如下: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咯。

热点排行