题解 | #求int型正整数在内存中存储时1的个数#
求int型正整数在内存中存储时1的个数
https://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9
#include <iostream>
int countBits(int number) {
int count = 0;
while (number) {
count += number & 1; // 如果当前位是1,计数器加1
number >>= 1; // 将整数右移一位,丢弃最低位
}
return count;
}
int main() {
int number;
std::cin >> number;
// 确保输入的是一个正整数
if (number < 0) {
std::cout << std::endl;
return 1;
}
int bitCount = countBits(number);
std::cout <<bitCount << std::endl;
return 0;
}
在32位整数中,一个整数的二进制表示由32位组成。要计算一个整数在内存中存储时1的个数,你可以使用位操作的方法。一个常见的方法是使用一个与当前整数中所有位都进行异或操作的掩码,从最低位开始,每次将掩码左移一位,直到掩码为0。在每次迭代中,如果整数与掩码的按位与操作结果不为0,说明当前位是1,计数器加1。
这段代码定义了一个countBits函数,它接受一个整数参数,并返回该整数二进制表示中1的个数。然后在main函数中,程序提示用户输入一个整数,调用countBits函数,并输出结果。
