/**
* 通过二进制判断开关
*/
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”