C/C++程序计算整数中设置的位数?
计数设置的位数意味着计算给定整数的 1 的个数。为此,我们有多种可应用的解决方案。在本例中,我们有一个二进制数(整数的二进制表示),我们必须计算字符串中 1 的个数。
为了计算 1 的个数,我们将获取字符串,遍历每个元素并计算字符串中所有 1 的个数。例如,如果我们输入 17,输出将为 2,因为 17 的二进制为 10001,其中包含两个 1。
Input: Enter a positive integer: 6 Output: 2
解释
6 的二进制表示为 110,它有两个设置的位。
这种迭代方法每个位需要一次迭代。它遍历数字的所有位。当不再设置位时,迭代终止。在最坏的情况下,在一个只有最高有效位设置的 32 位字上,它将循环 32 次迭代。此解决方案是最简单的解决方案,如果 1 稀疏且位于最低有效位中,则很有用。
示例
#include <stdio.h> int main(void) { unsigned int n = 34; for (c = 0; n; n >>= 1) { c += n & 1; } printf("%d\n", c); }
广告