您的位置:首页 > 其它

二进制开关实现

2015-12-01 17:21 309 查看
开发中总是存在着各种状态的保持。都是字段的话,相当麻烦。使用二进制状态存储就方便多了。现在一个int值你可以保存32个开关了。

public class a {

/**
*  获取当前index状态,[0,1];
*  @param value     存储的开关数据int32
*  @param index     第几位
*  @return          当前位置的值
*/
static boolean value_bit(int value,int index){
return ( value >> (index - 1) & 1 ) == 1;
}

/**
*  处理后的存储数据 int32
*  @param value     存储的开关数据int32
*  @param index     第几位
*  @param set       开关状态
*  @return          当前位置的值[0,1]
*/
static int value_bit(int value,int index,boolean set){
index --;
if(set){
value = 1 << index | value;
} else {
value = ~(1<<index) & value;
}
return value;
}

public static void main(String[] args) {
int data = 0;
data = a.value_bit(data,1,true);
data = a.value_bit(data,2,true);
data = a.value_bit(data,3,true);
data = a.value_bit(data,5,true);
System.out.println("data:"+data + " data_bin:"+Integer.toBinaryString(data));

data = a.value_bit(data,1,false);
data = a.value_bit(data,3,false);
data = a.value_bit(data,4,true);
System.out.println("data:"+data + " data_bin:"+Integer.toBinaryString(data));

System.out.println(a.value_bit(data,1));
System.out.println(a.value_bit(data,2));
System.out.println(a.value_bit(data,3));
System.out.println(a.value_bit(data,4));
System.out.println(a.value_bit(data,5));

/** out :
data:23 data_bin:10111
data:26 data_bin:11010
false
true
false
true
true
*/
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: