Android源码中的FLAG为何使用16进制
Android源码中主要针对FLAG的运算有三种
①. 增加属性 "|" 如果需要向flag变量中增加某个FLAG,使用"|"运算符 flag |= XXX_FLAG; 原因: 如果flag变量没有XXX_FLAG,则 | 完后flag对应的位为1,如果有XXX_FLAG,则 | 完后值不会变对应位还是1.
②. 包含属性 "&" 如果需要判断flag变量中是否包含XXX_FLAG,使用"&"运算符 flag & XXX_FLAG != 0 或者 flag & XXX_FLAG = XXX_FLAG 原因: 如果flag变量里包含XXX_FLAG,则&完后flag变量对应的位为1,因为XXX_FLAG的定义保证了只有一位非0,其他位都为0,所以如果是包含的话&运算后值不为0,值为此XXX_FLAG的值,不包含的话值为0.
③.取消属性 "&~" 如果需要取消flag变量的XXX_FLAG, 使用 "&~". flag &= ~XXX_FLAG; 原因: 先对XXX_FLAG进行取反 则XXX_FLAG原来非0的那一位变为0,则使用&运算符后flag变量非0的那一位变为0,则意味着flag变量不包含XXX_FLAG.
3、使用位移<<操作符