【发布时间】:2014-05-04 05:51:01
【问题描述】:
这段代码是如何工作的
例如
input: 5(101)
ouput: 2
功能是
scanf("%d", &a);
while(a)
{
oneina++;
a=a&(a-1);
}
printf("%d", oneina);
【问题讨论】:
-
@BurhanKhalid 阅读了标题。
-
拿起铅笔和纸,试着弄清楚
a=a&(a-1)做了什么。 -
@BurhanKhalid 那么坦率地说,你认为它应该做什么? 非常明显它应该(并且确实)计算给定整数的二进制表示中的个数。
-
错误,什么?我想您是在问 代码是如何工作的?我不明白这里的问题。
-
对不起我的英语,我期待一个一般推导形式的解决方案(适用于所有情况),而不是示例的解释......
标签: c bit-manipulation bit bitwise-operators bitwise-and