How to Count Set Bits in an Integer in C++?
In binary representation of a number, a set bit is defined as the binary digit (bit) that is set to 1. In this article, we will learn how to count the set bits in a given integer in C++.
Example
Input: 13
Output:
The number of set bits in 13 (1101) is: 3
Counting Set Bits in an Integer
To count the set bits in a number in C++, we can directly use the __builtin_popcount() method provided by the GCC compiler in C++. This function returns the number of set bits in a given unsigned integer.
Syntax
__builtin_popcount(int x);
Here, x is the unsigned or positive number for which you want to determine the number of set bits.
C++ Program to Count Number of Set Bits in an Integer
The following program illustrates how we can count the set bits of a number using the __builtin_popcount() method in C++.
// C++ Program to Count Set Bits
#include <bitset>
#include <iostream>
using namespace std;
// Function to count set bits in an integer and print the
// result
void countAndPrintSetBits(int num)
{
// Calculate number of set bits using GCC's built-in
// function for counting set bits
int count = __builtin_popcount(num);
// Print the number of set bits and binary
// representation of the number
cout << "Number of set bits in " << num << " ("
<< bitset<32>(num).to_string().substr(
bitset<32>(num).to_string().find('1'))
<< ") is: " << count << endl;
}
int main()
{
// Declare the numbers
int num1 = 5;
int num2 = 13;
// Count and print set bits for num1
countAndPrintSetBits(num1);
// Count and print set bits for num2
countAndPrintSetBits(num2);
return 0;
}
Output
Number of set bits in 5 (101) is: 2 Number of set bits in 13 (1101) is: 3
Time Complexity: O(1)
Auxiliary Space: O(1)
To learn about other methods for counting set bits in an integer you may refer to this article : Counting Set Bits in an integer