diff --git a/src/main/java/com/thealgorithms/bitmanipulation/CountSetBits.java b/src/main/java/com/thealgorithms/bitmanipulation/CountSetBits.java new file mode 100644 index 000000000000..2593df013092 --- /dev/null +++ b/src/main/java/com/thealgorithms/bitmanipulation/CountSetBits.java @@ -0,0 +1,15 @@ +// CountSetBits.java +package com.thealgorithms.bitmanipulation; + +public final class CountSetBits { + private CountSetBits() { + } + public static int countSetBits(int n) { + int count = 0; + while (n > 0) { + count += n & 1; + n >>= 1; + } + return count; + } +} diff --git a/src/test/java/com/thealgorithms/bitmanipulation/CountSetBitsTest.java b/src/test/java/com/thealgorithms/bitmanipulation/CountSetBitsTest.java new file mode 100644 index 000000000000..50e74b7dfd7f --- /dev/null +++ b/src/test/java/com/thealgorithms/bitmanipulation/CountSetBitsTest.java @@ -0,0 +1,17 @@ +// CountSetBitsTest.java +package com.thealgorithms.bitmanipulation; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +public class CountSetBitsTest { + @Test + void testCountSetBits() { + assertEquals(0, CountSetBits.countSetBits(0)); + assertEquals(1, CountSetBits.countSetBits(1)); + assertEquals(2, CountSetBits.countSetBits(5)); + assertEquals(3, CountSetBits.countSetBits(7)); + assertEquals(4, CountSetBits.countSetBits(15)); + } +}