package cn.iocoder.yudao.framework.common.thealgorithms.bitmanipulation;

//public final class BitSwap {
//    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);
//        }
//        return data;
//    }
//}



public final class BitSwap {
    private BitSwap() {
    }

    /*
     * @brief 交换数据中位置 posA 和 posB 的位
     */
    public static int bitSwap(int data, final int posA, final int posB) {
        // 如果 posA 和 posB 位置的位不同，则进行交换
        if (SingleBitOperations.getBit(data, posA) != SingleBitOperations.getBit(data, posB)) {
            // 通过异或操作交换位
            data ^= (1 << posA) ^ (1 << posB);
        }
        return data;
    }
}
