掩码

按位与运算符常用于掩码(mask)。所谓掩码指的是一些设置为开(1)或关(0)的位组合。

1、打开位(设置位)

 打开一个值中的特定位,同时保持其他位不变。

   flags  | MASK

  例:flags 是 00001111,MASK 是 10110110.下面的表达式:

    flags | MASK

    即:(00001111) | (10110110)

    其结果为:(10111111)

    MASK 中为 1 的位,flags 与其对应的位也为 1。MASK 中为 0 的位, flags 与其对应的位不变。

2、关闭位(清空位)

 关闭指定的位,同时保持其他位不变。

  flags  & ~ ( MASK)

  例:flags 是 00001111, MASK 是10110110.下面的表达式:

      flags & ~(MASK)

    即:(00001111) & ~(10110110)

    其结果为:(00001001)

    MASK 中为 1 的位在结果中都被设置为(清空)为 0。flags 中与 MASK 为 0 的位相应的为在结果中都未改变。

3、切换位

 打开已关闭的位,关闭已打开的位

  flags ^ MASK

  例:flags 是 00001111, MASK 是10110110.下面的表达式:

    flags ^ MASK

    即:(00001111) ^ (10110110)

    其结果为:(10111001)

    flags 中与 MASK 为 1 的位相对应的位都被切换,MASK 为 0 的位相对应的位不变。

4、检查位

  检查某位的值。(覆盖 flags 中其他位的值,只用要检查的位和 MASK 比较) 

  ((flags & MASK)== MASK)//按位运算符的优先级小于等号,所以必须加上括号

5、移位运算符

number << n number 乘以 2 的 n次幂
number >> n 如果 number 为非负,则用 number 除以 2 的 n 次幂 

  

原文地址:https://www.cnblogs.com/moyu557/p/10777977.html