#include <cstdlib> #include <iostream> #include <bitset> using namespace std; int getCount(int x) { int count = 0; while(x) { count++; x &= (x - 1); } return count; } int main(int argc, char *argv[]) { int value; cout << "please input a number: "; cin >> value; bitset<32> bitS(value); cout << "1's number is(using stl): " << bitS.count() << endl; cout << "1's number is(using self): " << getCount(value) << endl; system("PAUSE"); return EXIT_SUCCESS; } 利用stl中的bitset可以很方便的计算出1的个数。。。 另一个算法是在一个笔试题中看到的,还不错....