unsigned mystery(int x){
unsigned i = 0;
while(x){
x = x&(x-1);
i++;
}
return i;
}
我认为这会返回“2”的幂直到我们给出的数字。
最佳答案
它计算 x 中设置的位数。
每次循环时,表达式x = x&(x-1)
都会清除最低有效设置位,并且循环直到x
为零。 i
计算发生这种情况之前的迭代次数,因此它最终等于原始参数中设置的位数。
此函数通常称为“popcount”
关于c - 下面的代码片段在c中返回什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51237788/