题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
利用位运算~第二种思路很赞....
#include<iostream> using namespace std; int count_one_1(int num){ int cnt=0; //unsigned int i=1; int i=1; while(i){ if(num&i) cnt++; i=i<<1; } return cnt; } int count_one_2(int num){ //很赞的方法 int cnt=0; while(num){ num=num&(num-1); //101 & 100 = 100; 100 & 011=0; cnt++; } return cnt; } int main(void){ int num; while(cin>>num){ cout<<"solution1:" <<count_one_1(num)<<endl; cout<<"solution2:" <<count_one_2(num)<<endl; } system("pause"); return 0; }