// 编写一个函数,用于计算一个整数的二进制表示中1的个数及0的个数,并返回结果。 #include #include using namespace std; // 1 的个数 int countOne(int n) { int cnt = 0; int temp = 0; for (int i = 0; temp < n; i++) { temp = 1 << i; if ((n & temp) == temp) cnt++; } return cnt; } // 0 的个数 int countZero(int n) { int cnt = 0; int temp = 0; for (int i = 0; temp < n; i++) { temp = 1 << i; if ((n | ~temp) == ~temp) cnt++; } if (temp > n) return cnt - 1; return cnt; } // 逆向打印函数 void print(int n) { int temp = 0; for (int i = 0; temp < n; i++) { temp = 1 << i; if ((n & temp) == temp) cout << "1" << " "; if ((n | ~temp) == ~temp) cout << "0" << " "; } cout << endl; } int main() { int x; cout << "请输入一个整数: "; cin >> x; cout << x << " 的二进制表示为: " << bitset<12>(x) << endl; cout << x << " 的我的二进制表示为: " << endl; print(x); cout << x << " 的二进制表示中 1 的个数为: " << countOne(x) << endl; cout << x << " 的二进制表示中 0 的个数为: " << countZero(x) << endl; return 0; }