Programming
Bit Manipulation
Algorithms
Integer Processing
Binary Numbers

Count the number of set bits in a 32-bit integer

Data Structures & Algorithms practice on Codemia

Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.

Practice algorithms

Counting the number of set bits (also known as 1s or ones) in a binary representation of a 32-bit integer is a common task in various fields related to computer science, such as cryptography, algorithm design, and network security. This process is generally referred to as computing the Hamming weight, or popcount. Understanding how to efficiently count set bits is fundamental for optimizing performance in systems where manipulation and analysis of binary data are required.

Why Count Set Bits?

The number of set bits in a binary number has practical importance in several areas:

  • Error Detection/Correction: In communications, the Hamming weight can help in calculating the Hamming distance which is crucial for error detecting and correcting codes.
  • Cryptography: Many cryptographic operations require the counting of set bits for encryption, decryption, or hashing procedures.
  • Optimization Techniques: In algorithms and data structure implementations, bit manipulation strategies can dramatically reduce time and space complexity.
  • Digital Electronics: In hardware design, particularly FPGAs and ASICs, counting set bits can be used to simplify logic designs.

Methods of Counting Set Bits

There are several techniques to count the number of set bits in a 32-bit integer, varying from simple loops to sophisticated bitwise operations.

Naive Method

The most straightforward approach is to iterate over each of the bits of the number, checking whether each bit is set (i.e., whether it is 1):

python
1def count_set_bits(n):
2    count = 0
3    while n:
4        count += n & 1
5        n >>= 1
6    return count

This method, although simple, tends to be slower, especially for large integers, as it processes every bit of the integer.

Brian Kernighan’s Algorithm

A more efficient approach is the Brian Kernighan’s Algorithm, which works by repeatedly stripping off the lowest set bit from the number:

python
1def count_set_bits(n):
2    count = 0
3    while n:
4        n &= n - 1  # remove the lowest set bit
5        count += 1
6    return count

This algorithm runs in O(k) time, where k is the number of set bits, making it more efficient compared to the naive method.

Lookup Table Method

For 32-bit numbers, a lookup table method can be very fast. It precomputes the Hamming weight for all byte values (0–255) and stores them in a table:

python
1lookup_table = [bin(i).count('1') for i in range(256)]
2
3def count_set_bits(n):
4    return (lookup_table[n & 0xff] +
5            lookup_table[(n >> 8) & 0xff] +
6            lookup_table[(n >> 16) & 0xff] +
7            lookup_table[(n >> 24) & 0xff])

Built-in Functions

Many programming environments provide built-in functions to count set bits. For instance, Python has bin(n).count('1'), and C++ offers __builtin_popcount.

Comparison of Methods

MethodComplexityPerformanceSuitability
NaiveO(b)O(b)SlowSimple cases, small integers
Brian Kernighan’sO(k)O(k)FastGeneral purpose
Lookup TableO(1)O(1)Very FastFixed-size integers, repetitive tasks
Built-in FunctionsImplementation dependentFastWhen available and optimized

(bb = number of bits, kk = number of set bits)

Conclusion

Counting set bits is a fundamental operation that has applications in various sectors of computing. Several methods exist, each with its advantages and disadvantages, offering trade-offs between simplicity and efficiency. Choosing the right method depends on specific requirements such as the size of the input data, frequency of operation, and the computational resources available.


Related reading
Course
Intermediate
27 lessons
15 hours
DSA Fundamentals

Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.

View the course
Track what you have practised

A free account saves your progress, solutions and study plan across every problem on Codemia.

Data Structures & Algorithms practice on Codemia

Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.

Practice algorithms

All Rights Reserved.