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