package com.thealgorithms.bitmanipulation; /** * Utility class for performing bit-swapping operations on integers. * This class cannot be instantiated. */ public final class BitSwap { private BitSwap() { } /** * Swaps two bits at specified positions in an integer. * * @param data The input integer whose bits need to be swapped * @param posA The position of the first bit (0-based, from least significant) * @param posB The position of the second bit (0-based, from least significant) * @return The modified value with swapped bits * @throws IllegalArgumentException if either position is negative or ≥ 32 */ public static int bitSwap(int data, final int posA, final int posB) { if (posA < 0 || posA >= Integer.SIZE || posB < 0 || posB >= Integer.SIZE) { throw new IllegalArgumentException("Bit positions must be between 0 and 31"); } boolean bitA = ((data >> posA) & 1) != 0; boolean bitB = ((data >> posB) & 1) != 0; if (bitA != bitB) { data ^= (1 << posA) ^ (1 << posB); } return data; } }