`

<转>利用位操作来进行状态操作

    博客分类:
  • JAVA
阅读更多
print?<SPAN style="BACKGROUND-COLOR: rgb(255,255,255); FONT-FAMILY: Arial, Helvetica, sans-serif; WHITE-SPACE: normal">以前经常看到关于位操作的代码嫌麻烦就掠过去不看,最近又看到了一段代码里面有关于位操作的,于是静下心来仔细看看,发现位操作不难掌握,而且感觉利用位操作控制食物的状态非常地好用。</SPAN>

以前经常看到关于位操作的代码嫌麻烦就掠过去不看,最近又看到了一段代码里面有关于位操作的,于是静下心来仔细看看,发现位操作不难掌握,而且感觉利用位操作控制食物的状态非常地好用。定义的状态都必须是0和2的幂方数,比如0,1,2,4,8,因为它们的二进制表示是0000,0001,0010,0100,1000,进行位操作时可以控制各个状态。下面举一个例子简单说明一下:

首先定义一些整型常量:




private static final int STATE_NONE = 0;
    private static final int STATE_REFRESHING = 1;      // 刷新中 
    private static final int STATE_LOADING_MORE = 2;    // 加载更多中 
    private static final int STATE_DRAGING = 4;         // 拖动中 
    private static final int STATE_MOTION_DOWN = 8;     // 按下


然后定义一个整型变量:



private int state = STATE_NONE;
通过对state进行操作来对状态进行操作。

比如


state &= ~STATE_REFRESHING;//状态中去掉STATE_REFRESHING状态 
state & STATE_MOTION_DOWN) == STATE_MOTION_DOWN;//判断当前状态有没有包含STATE_MOTION_DOWN状态 
state |= STATE_REFRESHING;//状态中添加 STATE_REFRESHING状态
分享到:
评论

相关推荐

    C#编程经验技巧宝典

    58&lt;br&gt;&lt;br&gt;0081 文本中首字母改为大写 59&lt;br&gt;&lt;br&gt;0082 C#随机数的产生 59&lt;br&gt;&lt;br&gt;0083 身份证从15位升至18位算法 60&lt;br&gt;&lt;br&gt;0084 十进制数转二进制数的算法 60&lt;br&gt;&lt;br&gt;0085 十进制数转八进制数的算法 61...

    C#.net_经典编程例子400个

    5&lt;br&gt;实例006 菜级联菜单 7&lt;br&gt;1.2 工具栏设计 7&lt;br&gt;实例007 带背景的工具栏 7&lt;br&gt;实例008 浮动工具栏 8&lt;br&gt;实例009 带下拉菜单的工具栏 9&lt;br&gt;实例010 具有提示功能的工具栏 9&lt;br&gt;1.3 状态栏设计 10...

    Delphi7 编程 100 实例

    ToolBar工具栏控件的使用&lt;br&gt;动态建立主菜单选项&lt;br&gt;窗口界面的动态分隔...位真彩转换到256色&lt;br&gt;调整图片的RGB对比度&lt;br&gt;实现图像的灰度级处理效果&lt;br&gt;3种像素历遍方法的比较和实现&lt;br&gt;实现屏幕拷贝&lt;br&gt;实现图像漫游...

    MYSQL培训经典教程(共两部分) 1/2

    MYSQL高级特性 81&lt;br&gt;4.1 集合函数 82&lt;br&gt;4.1.1 行列计数 82&lt;br&gt;4.1.2统计字段值的数目 82&lt;br&gt;4.1.3 计算字段的平均值 83&lt;br&gt;4.1.4 计算字段值的和 84&lt;br&gt;4.1.5 计算字段值的极值 84&lt;br&gt;4.1.6 总结 86&lt;br&gt;4.2 操作...

    MYSQL培训经典教程(共两部分) 2/2

    MYSQL高级特性 81&lt;br&gt;4.1 集合函数 82&lt;br&gt;4.1.1 行列计数 82&lt;br&gt;4.1.2统计字段值的数目 82&lt;br&gt;4.1.3 计算字段的平均值 83&lt;br&gt;4.1.4 计算字段值的和 84&lt;br&gt;4.1.5 计算字段值的极值 84&lt;br&gt;4.1.6 总结 86&lt;br&gt;4.2 操作...

    VB编程资源大全(源码 网络)

    i037_source.zip&lt;br&gt;一个邮件检测程序(6KB)&lt;br&gt;98,i036_liuliang.zip&lt;br&gt;INTETNET 流量管理系统 (303KB)&lt;br&gt;99,i035_fee.zip&lt;br&gt;东莞的一位网友编写的一个网络计费,需要您对它进行完善(76KB)&lt;br&gt;100,i034_0048831....

    Visual C++ 编程资源大全(源码 系统)

    COOL(29KB)&lt;END&gt;&lt;br&gt;33,FontsTest.zip&lt;br&gt;列举系统中的所有字体(41KB)&lt;END&gt;&lt;br&gt;34,memmap.zip&lt;br&gt;操作内存映像文件,提供的CMemMapFile功能强大(16KB)&lt;END&gt;&lt;br&gt;35,cfile64.zip&lt;br&gt;支持Win32 64位文件系统的一个类(15...

    VB编程资源大全(源码 控制)

    custmnu2.zip &lt;br&gt;又一个菜单的例子(5KB)&lt;br&gt;92,collSRC.zip &lt;br&gt;程序收集1.0版 (214KB)&lt;br&gt;93,countdown.zip &lt;br&gt;一个倒计时的程序(10KB)&lt;br&gt;94,00951404.zip &lt;br&gt;利用热键操作实现一键通(55KB)&lt;br&gt;95,system_v.zip...

    VB编程资源大全(控件 其它2)

    1,initoolseup.EXE &lt;br&gt;读写 INI 文件的控件(258KB) &lt;br&gt;2,djchart.ZIP&lt;br&gt;djchart(57KB)&lt;br&gt;3,indicator.ZIP&lt;br&gt;数据棒图控件(200KB)&lt;br&gt;4,xjtpripr.ZIP &lt;br&gt;打印预览控件(257KB) &lt;br&gt;5,trend.ZIP&lt;br&gt;趋势控件可...

    玩转校内&时间观念

    &lt;br&gt; 11、[Ver 1.1.0.3]&lt;br&gt;&lt;br&gt;玩转校内Ver 1.8.0.1&lt;br&gt; 1、功能完善中……&lt;br&gt; 2、这个版本对[Ver 1.0.0.0]版本代码进行了优化,加入部分注释说明,为后续查错纠错工作做好标记。&lt;br&gt; 3、开发时间为:2007年8月1日...

    玩转校内&时间观念(终结版Ⅱ)

    &lt;br&gt;11、[Ver 1.1.0.3]&lt;br&gt;&lt;br&gt;玩转校内Ver 1.8.0.1&lt;br&gt;1、功能完善中……&lt;br&gt;2、这个版本对[Ver 1.0.0.0]版本代码进行了优化,加入部分注释说明,为后续查错纠错工作做好标记。&lt;br&gt;3、开发时间为:2007年8月1日-...

    玩转校内[精简免安装版] Ver 2.4.27.95

    &lt;br&gt; 11、[Ver 1.1.0.3]&lt;br&gt;&lt;br&gt;玩转校内Ver 1.8.0.1&lt;br&gt; 1、功能完善中……&lt;br&gt; 2、这个版本对[Ver 1.0.0.0]版本代码进行了优化,加入部分注释说明,为后续查错纠错工作做好标记。&lt;br&gt; 3、开发时间为:2007年8月1日...

    delphi7编程百例

    &lt;br/&gt;ToolBar工具栏控件的使用&lt;br/&gt;动态建立主菜单选项&lt;br/&gt;窗口界面的...位真彩转换到256色&lt;br/&gt;调整图片的RGB对比度&lt;br/&gt;实现图像的灰度级处理效果&lt;br/&gt;3种像素历遍方法的比较和实现&lt;br/&gt;实现屏幕拷贝&lt;br/&gt;实现图像...

    c++头文件成列解释大全

    1. `&lt;bitset&gt;`:提供STL中的位集容器,用于存储和操作位字段。 2. `&lt;cctype&gt;`:包含处理字符的函数,如isalpha()、isdigit()等,用于检查字符的类型。 3. `&lt;cerrno&gt;`:定义了错误码,如errno,可以在出现错误时...

    GPS NEMA 0183格式数据

    - `&lt;5&gt;`:卫星状态(每17-24位)。 - `&lt;6&gt;`至`&lt;15&gt;`:预留字段。 - **$PGRMI**:表示当前位置和航向信息。 - `&lt;1&gt;`:纬度,格式为ddmm.mmm。 - `&lt;2&gt;`:纬度半球标识符(N/S)。 - `&lt;3&gt;`:经度,格式为dddmm....

    C、C++头文件函数大全

    - `&lt;bitset&gt;`: 定义了位集容器,用于高效存储和操作位。 - `&lt;cctype&gt;`: C++版本的`ctype.h`,函数同样用于字符分类。 - `&lt;cmath&gt;`: C++版本的`math.h`,提供浮点数数学函数。 - `&lt;complex&gt;`: 复数类,用于复数...

    山特三进三出UPS通讯协议

    通过本篇文档,读者能够了解到山特3A3 UPS的通信协议细节,并学会如何利用这些命令来获取UPS的运行状态和配置信息。 #### 命令集概述 山特3A3 UPS支持以下几种类型的命令: 1. **WH&lt;cr&gt;** - 用于查询整个系统中的...

    ARM系列处理器应用技术完全手册 第四章

    其中 `&lt;opcode&gt;` 表示具体的指令操作码,`&lt;cond&gt;` 是可选的条件码,`&lt;S&gt;` 表示该指令是否会影响程序状态寄存器(CPSR)的状态标志,`&lt;Rd&gt;` 和 `&lt;Rn&gt;` 分别表示目标寄存器和第一个源寄存器,而 `&lt;shifter_operand&gt;` ...

    QSsh 库文件(32bit&64bit)

    - **32bit** 和 **64bit**:这是指库文件的位宽,32位版本适用于32位操作系统的应用程序,而64位版本则用于64位操作系统。确保开发者可以根据目标平台选择合适的库。 - **debug** 和 **release**:这是关于编译模式...

Global site tag (gtag.js) - Google Analytics