编程技巧 | 神奇的1,2,4,8和按位运算符
概述
在编程过程中发现有很多源码里面会定义 1,2,4,8 等这样的常量,比如说 Android 的 ActionBar 关于显示的常量:
1 | public static final int DISPLAY_USE_LOGO = 0x1; |
为什么会这样设计呢?下面告诉你.
使用按位运算操作 1,2,4,8
- 使用
按位或(|)
叠加参数
1 | getActionBar().setDisplayOptions(ActionBar.DISPLAY_USE_LOGO | ActionBar.DISPLAY_SHOW_HOME); |
这里 ActionBar.DISPLAY_USE_LOGO | ActionBar.DISPLAY_SHOW_HOME
的值为 3, 所以DISPLAY_HOME_AS_UP
不能为 3, 值为 4 是个不错的选择. 一般来说我们程序中会使用 2 的 n 次幂来作为相关常量的值,如 1,2,4,8,32,64…
- 使用
按位与(&)
检查是否包含
1 | public boolean hasOption(int option) { |
- 使用
按位异或(^)
删除某个值
1 | public boolean removeOption(int option) { |
- 使用
按位异或(&)
+按位取反(~)
也可删除某个值
1 | public boolean removeOption(int option) { |
总结
学计算机基础的时候,老师也没有介绍按位的用法. 工作中才发现其中的神奇之处, 是不是很神奇呢? 在你的程序中也用上这样的设计吧~~
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Gavin Liu - 代码人生与科技生活
评论