【练习】整数的二进制表示中1 的个数
/************************************************************************/ /* 整数的二进制表示中1 的个数 题目:输入一个整数,求该整数的二进制表达中有多少个1。 例如输入10,由于其二进制表示为1010,有两个1,因此输出2 */ /************************************************************************/ #include <iostream> using namespace std; int NumberOfOne(int n)//算法原理:十进制与二进制间的转化//此算法不好,原因1,除法效率比移位运算效率低,原因2,此算法无法计算负数情况 { int result=0; while (n>0) { if (n%2==1) { result++; } n/=2; } return result; } int NumberOf1_Solution1(int i) { int count = 0; unsigned int flag = 1; while(flag) { if(i & flag) count ++; flag = flag << 1; } return count; } int main() { int n; cout<<"input n\n"; cin>>n; // cout<<NumberOfOne(n); // cout<<endl; cout<<NumberOf1_Solution1(n); return 0; }