题目:输入一个整数,求该整数的二进制表达中有多少个1。
举例:输入10,其二进制表示为1010,有两个1,因此输出2。
答:
#include "stdafx.h" #include <iostream> using namespace std; //只限于正数(输入负数会陷入死循环) int CountNonnegativeOneNumber(int n) { int count = 0; while (n) { if (n & 1) { count++; } n = n>>1; } return count; } //负数与正数均可 int CountOneNumber(int n) { int count = 0; unsigned int flag = 1; while (flag) { if (n & flag) { count++; } flag = flag<<1; } return count; } int _tmain(int argc, _TCHAR* argv[]) { cout<<CountNonnegativeOneNumber(110)<<endl; cout<<CountOneNumber(110)<<endl; return 0; }
运行界面如下: