二进制开关实现
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 */ } }
相关文章推荐
- 文件、描述符与索引节点总结
- webpack练手项目之easySlide(二):代码分割
- 每天一个linux命令(15):tail 命令
- QT手动moc问题:virtual struct QMetaObject const * __thiscall Widget::metaObject
- struts2配置文件详解一
- Leetcode #217 Contains Duplicate
- 实习整理(十五)
- 【学习笔记javascript设计模式与开发实践(策略模式)----5】
- Maven的生命周期和插件
- 九度OJ 1354:和为S的连续正数序列 (整除)
- 内核线程
- 每天一个linux命令(14):head 命令
- 九度OJ 1354:和为S的连续正数序列 (整除)
- iOS开发中SDK是什么?
- iOS 苹果官方Demo合集
- Android 4.1 设置Activity切换动画(XML)
- JDBC-简单连接Oracle Database
- iOS NSUserDefaults简介及使用
- 基于yarn的公平调度实例
- 进程地址空间