读书人

一路面试题求解

发布时间: 2012-09-19 13:43:53 作者: rapoo

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


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咯。

读书人网 >C语言

热点推荐