diff --git a/src/main/java/com/thealgorithms/bitmanipulation/SetKthBit.java b/src/main/java/com/thealgorithms/bitmanipulation/SetKthBit.java new file mode 100644 index 000000000000..3c4e50d1d38d --- /dev/null +++ b/src/main/java/com/thealgorithms/bitmanipulation/SetKthBit.java @@ -0,0 +1,22 @@ +package com.thealgorithms.bitmanipulation; + +/*** + * Sets the kth bit of a given integer to 1 + * e.g. setting 3rd bit in binary of 17 (binary 10001) gives 25 (binary 11001) + * @author inishantjain + */ + +public class SetKthBit { + /** + * Sets the kth bit of a given integer. + * + * @param num The original integer. + * @param k The position of the bit to set (0-based index). + * @return The integer with the kth bit set. + */ + public static int setKthBit(int num, int k) { + int mask = 1 << k; + num = num | mask; + return num; + } +} diff --git a/src/test/java/com/thealgorithms/bitmanipulation/SetKthBitTest.java b/src/test/java/com/thealgorithms/bitmanipulation/SetKthBitTest.java new file mode 100644 index 000000000000..35d5fa35da54 --- /dev/null +++ b/src/test/java/com/thealgorithms/bitmanipulation/SetKthBitTest.java @@ -0,0 +1,23 @@ +package com.thealgorithms.bitmanipulation; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class SetKthBitTest { + + @Test + void testSetKthBit() { + // Test case: Setting the 0th bit in 5 (binary 101) + assertEquals(5, SetKthBit.setKthBit(5, 0)); + + // Test case: Setting the 2nd bit in 10 (binary 1010) + assertEquals(14, SetKthBit.setKthBit(10, 2)); + + // Test case: Setting the 3rd bit in 15 (binary 1111) + assertEquals(15, SetKthBit.setKthBit(15, 3)); + + // Test case: Setting the 1st bit in 0 (binary 0) + assertEquals(2, SetKthBit.setKthBit(0, 1)); + } +}