好玩的位操作开关群
来源:互联网 发布:科来网络 编辑:程序博客网 时间:2024/06/08 09:03
作为开发者, 经常应付开发中涉及到的变量, 就好像脚心上长痘痘一样, 挠也不是, 不挠也不是. 每个控制变量单独设置是没有什么, 但是设置多了就烦了, 一不好控制, 二不好管理的
使用位开关的好处是, 便于管理, 也处理速度快, 优于数值和布尔处理速度
下面介绍位操作的使用方法
创建:
利用枚举创建多个相关或者不相关的开关类型, 通过枚举集中管理, 可以一目了然, 增加的时候改变最后一位值, 最多设置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已经足够满足现状了
0 0
- 好玩的位操作开关群
- 关于List比较好玩的操作
- 设置位标记的开关宏
- 开关量变位的巡检程序
- 好玩的...
- 好玩的
- s3cmci的 io开关操作分析
- 液位开关
- vijos 1197 费解的开关 反向bfs+位运算
- oracle 占位操作和开关操作的问题。
- Java源码学习之Integer类(三)——好玩的位运算函数
- 简单的位操作
- C的位操作
- 位向量的操作
- c的位操作
- C的位操作
- 位的操作
- 常用的位操作
- [quick-cocos2d-x lua学习] 各大IDE之体验及选择 ( LDT、Sublime Text 2、IntelliJ IDEA 12、XCode5 )
- 5165465
- 泛型Dao-减少重复的Dao代码,用Hibernate实现
- POJ 1083 Moving Tables
- 程序人生:无他,唯心向尔
- 好玩的位操作开关群
- 关于C语言break跳出双重循环的小技巧
- Qt 扁平化MainWindow以及自定义标题栏
- Compare two ints without using comparison operators
- 在ubuntu下安装KDE以及完全卸载KDE
- poj3468 A Simple Problem with Integers 线段树 延时更新
- 构建一个轻量级的嵌入式虚拟平台,开发工程用板stm32 picoc解释器,大量自定义函数,sarm拓展,lwip移植,nes模拟器移植,系统优化,等等技术的融合
- 2016华为校招上机笔试练习题1
- ubuntu没有权限(不能)创建文件夹(目录)