您的位置:首页 > 其它

整数n的二进制表示中所含1的个数

2013-01-29 21:19 218 查看
题目:给定正整数n,求解n的二进制表示中所包含的1的个数。

分析:此题解法很多,这里只写一种效率较高的算法,它的时间负责度是O(m),m是n的二进制表示中所含1的个数。可以利用如下特点:假如n是正整数,则n&(n-1)能把n的二进制表示中最右侧的那个1消除。

解决方案:根据分析中所提到的特性,假设n的二进制表示中含有m个1,则只需要进行m次n=n&(n-1)即可得到0.

以下是此方法的C语言实现:

#include

int calculate_the_zero_number(int n)
//计算正整数n的二进制表示中所含1的个数

{

int number=0;

while(n)

{

n=n&(n-1);

number++;

}

return number;

}

int main()

{

int n,number_of_zero_at_rear_of_the_binary_form;

printf("please input the number:\n");

scanf("%d",&n);

number_of_zero_at_rear_of_the_binary_form=calculate_the_zero_number(n);

printf("the zero number at the rear of the binary form of %d is
%d\n",n,

number_of_zero_at_rear_of_the_binary_form);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: