今でもあなたは私の光丶

BitOperationUtil

/**
 * 通过二进制判断开关
 */
public class BitOperationUtil
{
    private static final int TWO = 2;
    /**
     * 是否存在一个状态值
     * 如 7,1 判断7的右边第一位是否开启
     * @param states 状态值
     * @param value 从右数哪一位
     * @return
     */
    public static boolean hasState(long states,int val)
    {
        long value = (long) Math.pow(TWO, val - 1);
        return (states & value) !=  0;
    }
    /**
     * 添加一个状态值
     * @param states 状态值
     * @param value 从右数哪一位
     */
    public static long addState(long states,int val)
    {
        if(hasState(states,val))
        {
            return states;
        }
        long value = (long) Math.pow(TWO, val - 1);
        return (states | value) ;
    }
    /**
     * 删除一个状态值
     * @param states 状态值
     * @param value 从右数哪一位
     */
    public static long removeState(long states,int val)
    {
        if(!hasState(states,val))
        {
            return states;
        }
        long value = (long) Math.pow(TWO, val - 1);
        return (states ^ value) ;
    }
}

发表评论

167 条评论 “BitOperationUtil”