5
回答
来讨论下java中逻辑与(&)和逻辑或(|) 的特点和用途
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
如题!!!!!!!!!!!!!!!
举报
刘文波85
发帖于5年前 5回/1K+阅
共有5个答案 最后回答: 5年前
标志位,例如我喜欢用一个 options 字段来存储多个开关值

if((options & FLAG_CAN_COMMENT) == FLAG_CAN_COMMENT)

用来判断是否有某个标志

节约存储空间,比如 一个 int 是32位,其实可以表示32个boolean 值,比用 boolean数组更方便。实际上可以用来判断标记或者状态是否存在

例如我们可以定义这样的一个数据。

int flagA=1<<1; int flagB=1<<2;int flagC=1<<3;

当我们判断某一个东西是否存在某种状态的时候

可以使用 if(option&(flagA|flagB|flagC)!=0) 来判断这个这个状态是否存在 flagA,flagB,flagC,其中的一种或者多种状态。

如果需要进行基本数据类型之间的位操作的时候可以使用 & |。 其他时候很少用到这种运算符。比如一条信息的状态你用一个byte来表示某种状态 但这种状态只有一对是互斥的其他的状态并不互斥是可以叠加的, 0:未读 1:已读 2:删除 4:回复  当 2的时候表示 信息没有被读取就被删除了,如果是3就表示信息是已经读取并被删除,你要从这个byte中获得准确的单项状态就需要用 & 运算符 比如 status & 2 提取信息的删除状态。  你修改状态的时候就用到 | 运算符,如 status = status | 2 不改动信息已有的其他状态只是添加了删除。
顶部