首页 > 高级民工 > 位掩码

位掩码

2013年1月3日 发表评论 阅读评论

位掩码的作用主要是想通过与或运算快速的判断是否选择了某个选项,常见的如在J2SE的弹窗中常用到给窗口加按钮,某个参数里有类似于BTN_OK|BTN_CANCEL|BTN_NO这样的代码,这个就是使用了位掩码。
位掩码的原理比较简单按8bit的一个例子。
0 0 0 0  0 0 0 1   –>1
0 0 0 0  0 0 1 0   –>2
0 0 0 0  0 1 0 0   –>4
0 0 0 0  1 0 0 0   –>8

位掩码总是2的n次方,如果上面的值分别对应a1,a2,a3,a4.
那么a1|a2 –>0 0 0 0  0 0 1 1
这个参数被传入方法中后一个判断可能是这样

if( state&(a1|a2) ==1)  {//state&a1
//当state为a1或a2时。。to do something
//假设state=1则,00000001&00000011=1

}

 

通过与运算如果是0则未设置,如果是1则设置

上面的代码如果不用位掩码可能的代码会是这样

if( state==a1||state==a2 ){

}

位掩码的好处是在一定程度上减少代码量,并可以使得一个变量可以表示多种状态,只需通过与运算即可知道是否带有某个状态。

分类: 高级民工 标签:
  1. 本文目前尚无任何评论.

点击刷新