📖 Scenario: You are working on a simple program that counts how many bits are set to 1 in a number's binary form. This is useful in many areas like error detection and cryptography.
🎯 Goal: Build a Java program that uses Brian Kernighan's algorithm to count the number of set bits (1s) in a given integer.
📋 What You'll Learn
Create an integer variable named number with the value 29
Create an integer variable named count initialized to 0
Use a while loop that runs while number is greater than 0
Inside the loop, update number using number = number & (number - 1)
Increment count by 1 inside the loop
Print the value of count after the loop ends
💡 Why This Matters
🌍 Real World
Counting set bits is used in network masks, cryptography, and error detection systems.
💼 Career
Understanding bitwise operations and efficient algorithms is important for software engineers working with low-level data processing.
Progress0 / 4 steps
1
Create the number variable
Create an integer variable called number and set it to 29.
DSA Java
Hint
Use int number = 29; inside the main method.
2
Initialize the count variable
Add an integer variable called count and set it to 0 inside the main method, after number.
DSA Java
Hint
Use int count = 0; to start counting from zero.
3
Implement Brian Kernighan's loop
Use a while loop that runs while number > 0. Inside the loop, update number with number = number & (number - 1) and increase count by 1.
DSA Java
Hint
The loop keeps removing the rightmost set bit until number becomes zero.
4
Print the count of set bits
Print the value of count using System.out.println(count); after the while loop.
DSA Java
Hint
The number 29 in binary is 11101, which has 4 set bits.
Practice
(1/5)
1. What does the Brian Kernighan algorithm do when counting set bits in an integer?
easy
A. It counts the total number of digits in the integer
B. It converts the number to binary string and counts '0's
C. It shifts the bits to the right without changing the number
D. It repeatedly clears the least significant set bit until the number becomes zero
Solution
Step 1: Understand the algorithm's main operation
The Brian Kernighan algorithm works by clearing the least significant set bit in each iteration.
Step 2: Effect of clearing bits
Each clearing reduces the number of set bits by one until the number becomes zero.
Final Answer:
It repeatedly clears the least significant set bit until the number becomes zero -> Option D
Quick Check:
Clearing bits one by one counts set bits [OK]
Hint: Clear least set bit repeatedly to count set bits [OK]
Common Mistakes:
Counting total digits instead of set bits
Shifting bits without counting
Counting zeros instead of ones
2. Which of the following Java code snippets correctly implements the Brian Kernighan algorithm to count set bits?
easy
A. int count = 0; for(int i=0; i<32; i++) { if((n & (1 << i)) != 0) count++; }
B. int count = 0; while(n > 0) { n = n >> 1; count++; }
C. int count = 0; while(n > 0) { n = n & (n - 1); count++; }
D. int count = 0; while(n > 0) { n = n | (n - 1); count++; }
Solution
Step 1: Identify the correct bit clearing operation
The Brian Kernighan algorithm uses n = n & (n - 1) to clear the least significant set bit.
Step 2: Verify the loop and count increment
Loop runs while n > 0 and increments count each time a bit is cleared.
Final Answer:
int count = 0; while(n > 0) { n = n & (n - 1); count++; } -> Option C
Quick Check:
Use n = n & (n - 1) to clear bits [OK]
Hint: Use n = n & (n - 1) inside loop to count bits [OK]
Common Mistakes:
Using right shift instead of bit clearing
Using bitwise OR instead of AND
Counting bits by checking each bit manually
3. What is the output of the following Java code snippet?
int n = 13; // binary 1101
int count = 0;
while (n > 0) {
n = n & (n - 1);
count++;
}
System.out.println(count);
medium
A. 2
B. 3
C. 4
D. 5
Solution
Step 1: Convert 13 to binary and count set bits
13 in binary is 1101, which has three set bits (1,1,0,1).
Step 2: Apply Brian Kernighan algorithm iterations
Each iteration clears one set bit:
- Iteration 1: 1101 & 1100 = 1100
- Iteration 2: 1100 & 1011 = 1000
- Iteration 3: 1000 & 0111 = 0000
Loop runs 3 times, so count = 3.
Final Answer:
3 -> Option B
Quick Check:
Number of set bits in 13 = 3 [OK]
Hint: Count set bits in binary 1101 = 3 [OK]
Common Mistakes:
Counting total bits instead of set bits
Miscounting set bits in binary
Confusing bitwise AND with OR
4. Identify the error in the following Java code that attempts to count set bits using Brian Kernighan's algorithm:
int countSetBits(int n) {
int count = 0;
while (n != 0) {
n = n & (n + 1);
count++;
}
return count;
}
medium
A. Using n + 1 instead of n - 1 in bit clearing step
B. Incorrect loop condition should be n > 0
C. Missing initialization of count variable
D. Using bitwise OR instead of AND
Solution
Step 1: Check the bit clearing operation
The correct operation to clear the least significant set bit is n = n & (n - 1), not n & (n + 1).
Step 2: Effect of incorrect operation
Using n + 1 does not clear the least significant set bit and leads to incorrect counting or infinite loop.
Final Answer:
Using n + 1 instead of n - 1 in bit clearing step -> Option A
Quick Check:
Use n & (n - 1) to clear bits [OK]
Hint: Always use n & (n - 1) to clear bits [OK]
Common Mistakes:
Using n + 1 instead of n - 1
Wrong loop condition causing infinite loop
Confusing AND with OR operators
5. Given an array of integers, which Java method correctly uses Brian Kernighan's algorithm to return the total count of set bits in all elements?
int totalSetBits(int[] arr) {
int total = 0;
for (int num : arr) {
while (num > 0) {
num = num & (num - 1);
total++;
}
}
return total;
}
What is the output of totalSetBits(new int[]{3, 5, 7})?
hard
A. 7
B. 6
C. 8
D. 5
Solution
Step 1: Count set bits for each element
3 (binary 11) has 2 set bits, 5 (binary 101) has 2 set bits, 7 (binary 111) has 3 set bits.
Step 2: Sum all set bits
Total = 2 + 2 + 3 = 7.
Step 3: Verify code logic
The code correctly counts set bits for each number and sums them in total.
Final Answer:
7 -> Option A
Quick Check:
Sum of set bits in 3,5,7 = 7 [OK]
Hint: Sum set bits of each number using Brian Kernighan [OK]
Common Mistakes:
Miscounting set bits in numbers
Adding counts incorrectly
Using wrong bit clearing logic
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.