求二进制数中1的个数

来源:互联网 发布:淘宝方舟生存进化steam 编辑:程序博客网 时间:2024/06/10 08:20

1、对于一个int型的变量,求其二进制表示中“1”的个数,要求算法的执行效率尽可能的高。

算法一:

---- 对整数除以2,余1的个数就是二进制表示中“1”的个数。

#include <iostream>using namespace std;int main(){int number;cout<<"请输入一个整数:\n";while(cin>>number){int count = 0,a = number;while(a){if(a%2){count++;}a/=2;}cout<<number<<"的二进制表示中1的个数是:"<<count<<endl;}system("pause");return 0;}

输出:


算法二:

---- 将整数和0x1相与,若为1,则最右位为1,随之将数右移1.

#include <iostream>using namespace std;int main(){int number;while(cin>>number){int count = 0,a = number;while(a){count += a & 0x1;a >>= 1;}cout<<number<<"的二进制表示中1的个数是:"<<count<<endl;}system("pause");return 0;}
输出:

算法三:number &= (number -1)

#include <iostream>using namespace std;int main(){int number;while(cin>>number){int count = 0,a = number;while(a){a &= (a-1);count++;}cout<<number<<"的二进制表示中1的个数是:"<<count<<endl;}system("pause");return 0;}
输出:





0 0
原创粉丝点击