输入一个整数,输出该数二进制表示中1的个数。如输入32,输出1.


代码实现:


方法1:与运算


#define_CRT_SECURE_NO_WARNINGS1#include<iostream>usingnamespacestd;intFindOneNumber(unsignedintnum){intnumberofOne=0;while(num){num=num&(num-1);numberofOne++;}returnnumberofOne;}voidTest(){intnum=32;cout<<FindOneNumber(num)<<endl;}intmain(){Test();system("pause");return0;}


方法2:模除法

#define_CRT_SECURE_NO_WARNINGS1#include<iostream>usingnamespacestd;intFindOneNumber(unsignedintnum){intnumberofOne=0;while(num){if(num%2==1)numberofOne++;num/=2;}returnnumberofOne;}voidTest(){intnum=32;cout<<FindOneNumber(num)<<endl;}intmain(){Test();system("pause");return0;}


方法3:移位

#define_CRT_SECURE_NO_WARNINGS1#include<iostream>usingnamespacestd;intFindOneNumber(unsignedintnum){intnumberofOne=0;while(num){if(num&1)numberofOne++;num=num>>1;}returnnumberofOne;}voidTest(){intnum=32;cout<<FindOneNumber(num)<<endl;}intmain(){Test();system("pause");return0;}