分类: C/C++
2010-06-06 21:15:30
问题:下面程序最终输出的count的值是多少?
//算法1
# include <stdio.h>
int main()
{
int count = 0;
int m = 779;
while(m)
{
count++;
m = m&(m-1);
}
printf("%d\n", count);
return 0;
}
解答:自右向左,由低位到高位,依次将m中(二进制表示)的1变为0,即每循环依次m中的最低位的1变为0。
功能:计算m的二进制中1的个数。
我要是写计算某个数的二进制形式1的个数我会这么写
|
很显然算法1巧妙,简洁。算法2是常规做法。