好玩的位操作开关群
2015-11-10 02:08
302 查看
作为开发者, 经常应付开发中涉及到的变量, 就好像脚心上长痘痘一样, 挠也不是, 不挠也不是. 每个控制变量单独设置是没有什么, 但是设置多了就烦了, 一不好控制, 二不好管理的
使用位开关的好处是, 便于管理, 也处理速度快, 优于数值和布尔处理速度
下面介绍位操作的使用方法
打开某开关
关闭某开关
动态设置开关, 这样设置灵活度比较高, 但是不好管理, 不推荐
不过可以改进一下
判断开关不包含类型
使用位开关的好处是, 便于管理, 也处理速度快, 优于数值和布尔处理速度
下面介绍位操作的使用方法
创建:
利用枚举创建多个相关或者不相关的开关类型, 通过枚举集中管理, 可以一目了然, 增加的时候改变最后一位值, 最多设置32个开关, 同时完全关闭和完全开启可以单独作为一个类型enum 位类型{ 完全关闭 = 0, 位类型1 = 1<<0, 位类型2 = 1<<1, 完全开启 = -1, } uint32_t 位变量开关
设置位开关
覆盖指定开关位变量开关 = 位类型1
打开某开关
位变量开关 |= 位类型1
关闭某开关
位变量开关 &= ~位类型1
动态设置开关, 这样设置灵活度比较高, 但是不好管理, 不推荐
位变量开关 = 是否开1<<0 | 是否开2<<1 | 是否开<<3
不过可以改进一下
enum 类型{ 类型1, 类型2, } uint32_t 位变量开关 = 是否开1<<0 | 是否开2<<1 | 是否开<<3
判断开关开启
判断开关包含类型位变量开关 & 位类型1
判断开关不包含类型
!(位变量开关 & 位类型1)
题外话
因为box2d就是用这种开关来限制和检测碰撞, 而开脑洞去想, 如果box2d支持64位, 那么开关也可以开到64个, 不过现有的32组开关加上indexGroup已经足够满足现状了相关文章推荐
- 如何成为一名专家级的开发人员
- C/C++位操作实例总结
- .NET微信公众号开发之公众号消息处理
- 使用nodejs开发cli项目实例
- nodejs开发微博实例
- Egret引擎开发指南之创建项目
- C++位操作的常见用法小结
- Android开发自学笔记(二):工程文件剖析
- Java开发人员需知的十大戒律
- Web 开发常用工具 大家自己查找下载
- 三种Web开发主流技术的性价评价
- 在B/S开发中经常用到的JavaScript技术第1/3页
- 深入Android开发FAQ的详解
- Android生存指南之:开发中的注意事项
- asp.net 开发的一些常用技巧
- windows开发记事本程序纪实(二)逻辑篇1
- C#开发纽曼USB来电小秘书客户端总结
- node.js调用C++开发的模块实例
- 在EditPlus中配置Perl开发编译环境
- .NET微信公众号开发之创建自定义菜单