File tree Expand file tree Collapse file tree 2 files changed +45
-0
lines changed
main/java/com/thealgorithms/bitmanipulation
test/java/com/thealgorithms/bitmanipulation Expand file tree Collapse file tree 2 files changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ package com .thealgorithms .bitmanipulation ;
2
+
3
+ /**
4
+ * The ToggleKthBit class provides a method to toggle the K-th bit of a given number.
5
+ *
6
+ * Toggling means: if the K-th bit is 1, it becomes 0; if it's 0, it becomes 1.
7
+ *
8
+ * Example:
9
+ * Input: n = 10 (1010 in binary), k = 1
10
+ * Output: 8 (1000 in binary)
11
+ *
12
+ * @author Rahul
13
+ */
14
+ public final class ToggleKthBit {
15
+
16
+ private ToggleKthBit () {
17
+ // Utility class, no need to instantiate
18
+ }
19
+
20
+ /**
21
+ * Toggles the K-th bit (0-based index from right) of a number.
22
+ *
23
+ * @param n the number to toggle the bit in
24
+ * @param k the position of the bit to toggle (0-based)
25
+ * @return the number after toggling the K-th bit
26
+ */
27
+ public static int toggleKthBit (int n , int k ) {
28
+ return n ^ (1 << k );
29
+ }
30
+ }
Original file line number Diff line number Diff line change
1
+ package com .thealgorithms .bitmanipulation ;
2
+
3
+ import static org .junit .jupiter .api .Assertions .assertEquals ;
4
+ import org .junit .jupiter .api .Test ;
5
+
6
+ public class ToggleKthBitTest {
7
+
8
+ @ Test
9
+ public void testToggleKthBit () {
10
+ assertEquals (8 , ToggleKthBit .toggleKthBit (10 , 1 )); // 1010 ^ (1<<1) = 1000
11
+ assertEquals (14 , ToggleKthBit .toggleKthBit (10 , 2 )); // 1010 ^ (1<<2) = 1110
12
+ assertEquals (2 , ToggleKthBit .toggleKthBit (0 , 1 )); // 0000 ^ (1<<1) = 0010
13
+ assertEquals (0 , ToggleKthBit .toggleKthBit (1 , 0 )); // 0001 ^ (1<<0) = 0000
14
+ }
15
+ }
You can’t perform that action at this time.
0 commit comments