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

///*
// * Author: lukasb1b (https://github.com/lukasb1b)
// */
//
//public final class SingleBitOperations {
//    private SingleBitOperations() {
//    }
//    /**
//     * Flip the bit at position 'bit' in 'num'
//     */
//    public static int flipBit(final int num, final int bit) {
//        return num ^ (1 << bit);
//    }
//    /**
//     * Set the bit at position 'bit' to 1 in the 'num' variable
//     */
//    public static int setBit(final int num, final int bit) {
//        return num | (1 << bit);
//    }
//    /**
//     * Clears the bit located at 'bit' from 'num'
//     */
//    public static int clearBit(final int num, final int bit) {
//        return num & ~(1 << bit);
//    }
//    /**
//     * Get the bit located at 'bit' from 'num'
//     */
//    public static int getBit(final int num, final int bit) {
//        return ((num >> bit) & 1);
//    }
//}


/*
 * 作者: lukasb1b (https://github.com/lukasb1b)
 */

public final class SingleBitOperations {
    private SingleBitOperations() {
    }
    /**
     * 在 'num' 中翻转位于 'bit' 位置的位
     */
    public static int flipBit(final int num, final int bit) {
        return num ^ (1 << bit);
    }
    /**
     * 将 'num' 变量中位于 'bit' 位置的位设置为 1
     */
    public static int setBit(final int num, final int bit) {
        return num | (1 << bit);
    }
    /**
     * 清除 'num' 中位于 'bit' 的位
     */
    public static int clearBit(final int num, final int bit) {
        return num & ~(1 << bit);
    }
    /**
     * 从 'num' 获取位于 'bit' 的位
     */
    public static int getBit(final int num, final int bit) {
        return ((num >> bit) & 1);
    }
}
