首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查位掩码:x&b != 0 VS x&b == b

检查位掩码:x&b != 0 VS x&b == b
EN

Stack Overflow用户
提问于 2015-04-07 20:56:12
回答 1查看 26关注 0票数 0

假设x是位掩码值,b是一个标志。

代码语言:javascript
运行
复制
x = 0b10101101
b = 0b00000100

似乎有两种方法可以检查b指示的位是否在x中打开。

代码语言:javascript
运行
复制
if (x & b != 0)    // (1)
if (x & b == b)    // (2)

在大多数情况下,这两种检查似乎总是产生相同的结果,因为b总是一个二进制文件,只打开一位。

然而,我想知道是否有例外使一种方法比另一种方法更好?

EN

Stack Overflow用户

回答已采纳

发布于 2015-04-07 21:07:55

通常,如果我们将这两个值解释为位设置,则第一个条件检查x和b的交集是否为空(或者换句话说:如果b和x有相同的元素),而第二个条件检查b是否为x的子集。

显然,如果b是单例,则b是x的子集当且仅当交集不是空的。

所以,当你不能百分之百保证b是独生子女时,明智地选择你的条件。问问你自己,如果你想表达的话,b的所有元素都必须是x的元素,或者b的元素也是x的元素,这是一个很大的区别,除了

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29501160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档