<基本功>使用位操作进行多状态并存的指示和判断
2015-01-30 20:29
253 查看
从底层学来的位操作,对于很多上层操作带来了便利,例如多重状态的并存判断时,位操作显示了其高效率的内存利用率。
例如:
int STATUS = 0x0000 //总状态
//后两位表示开启状态
int START_STATUS= 0x0001;
int STOP_STATUS = 0x0000;
//前两位表示方向
int LEFT_STATUS = 0x0200;
int RIGHT_STATUS = 0x0400;
int UP_STATUS = 0x0800;
当开启设备时
STATUS |= START_STATUS;
若左转时
STATUS |= LEFT_STATUS;
若右转时
STATUS |=RIGHT_STATUS;
若右转时
STATUS |=UP_STATUS;
关闭时
STATUS &= STOP_STATUS;
判断
判断是否开启
(STATUS &= START_STATUS) == START_STATUS;
判断是否右转
(STATUS &= RIGHT_STATUS) == RIGHT_STATUS;
判断是否左转
(STATUS &= UP_STATUS) == UP_STATUS;
此方法有效减少了变量的个数,并在有2个以上状态时,表现出优势。
例如:
int STATUS = 0x0000 //总状态
//后两位表示开启状态
int START_STATUS= 0x0001;
int STOP_STATUS = 0x0000;
//前两位表示方向
int LEFT_STATUS = 0x0200;
int RIGHT_STATUS = 0x0400;
int UP_STATUS = 0x0800;
当开启设备时
STATUS |= START_STATUS;
若左转时
STATUS |= LEFT_STATUS;
若右转时
STATUS |=RIGHT_STATUS;
若右转时
STATUS |=UP_STATUS;
关闭时
STATUS &= STOP_STATUS;
判断
判断是否开启
(STATUS &= START_STATUS) == START_STATUS;
判断是否右转
(STATUS &= RIGHT_STATUS) == RIGHT_STATUS;
判断是否左转
(STATUS &= UP_STATUS) == UP_STATUS;
此方法有效减少了变量的个数,并在有2个以上状态时,表现出优势。
相关文章推荐
- <实例>C++ 将一句话里的单词进行倒置,标点符号不倒换——使用string库实现
- <Android>在Activity被非正常杀死并重建时,使用savedInstanceState进行数据恢复的简单实例
- Jsp 页面迭代中使用<s:if>判断动态变量值
- <s:if>标签判断的使用
- 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 <configuration>
- <转>用HTML判断IE版本
- android_应用开发之(使用<include>标签重用布局)
- <activity>元素的android:launchMod属性的使用
- <shape>的使用
- 在使用struts标签时,把<s:if>中的test写成了text
- 使用TRY CATCH进行SQL Server异常处理<转载>
- Maatkit工具使用<一>之mysql主从数据校验工具
- fedora 16 使用LiveCD修复grub2引导–<转>
- <转载>在Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间
- shell 编程中空格的使用–< 转>
- 解决 spring mvc 3.0 结合 hibernate3.2 使用<tx:annotation-driven>声明式事务无法提交的问题
- Android UI 优化 使用<include/>和 <merge />标签
- VS2010使用扩展方法对List<T>进行随机排序
- "<>"、"!="、"not in"、"exsits"和"not exists"的使用规范
- 使用<fstream>库