unsigned mystery(int x){
unsigned i = 0;
while(x){
x = x&(x-1);
i++;
}
return i;
}
Run Code Online (Sandbox Code Playgroud)
我认为这会返回'2'的幂,直到我们给出的数字.
它计算x中的设置位数.
每次循环时,表达式x = x&(x-1)将清除最不重要的设置位,并循环直到x为零. i计算迭代次数直到发生,因此它最终等于原始参数中的设置位数.
此功能通常称为"popcount"
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |