diff --git a/src/main/java/com/thealgorithms/bitmanipulation/BitSwap.java b/src/main/java/com/thealgorithms/bitmanipulation/BitSwap.java index 40b3097b1276..098a5ba9108d 100644 --- a/src/main/java/com/thealgorithms/bitmanipulation/BitSwap.java +++ b/src/main/java/com/thealgorithms/bitmanipulation/BitSwap.java @@ -7,8 +7,10 @@ private BitSwap() { * @brief Swaps the bits at the position posA and posB from data */ public static int bitSwap(int data, final int posA, final int posB) { - if (SingleBitOperations.getBit(data, posA) != SingleBitOperations.getBit(data, posB)) { - data ^= (1 << posA) ^ (1 << posB); + // Check if the bits at posA and posB are different + if (((data >> posA) & 1) != ((data >> posB) & 1)) { + // Swap the bits using XOR + data ^= (1 << posA) | (1 << posB); } return data; }