首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java:检查长整型中的位是0还是1

Java:检查长整型中的位是0还是1
EN

Stack Overflow用户
提问于 2009-07-07 13:41:44
回答 12查看 81.9K关注 0票数 79

您将使用什么方法来确定表示2^x的位是1还是0?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-07-07 13:42:54

我会使用:

代码语言:javascript
复制
if ((value & (1L << x)) != 0)
{
   // The bit was set
}

(您可能可以使用较少的括号,但我从来不记得按位操作的优先顺序。)

票数 186
EN

Stack Overflow用户

发布于 2009-07-07 14:05:01

另一种选择:

代码语言:javascript
复制
if (BigInteger.valueOf(value).testBit(x)) {
    // ...
}
票数 101
EN

Stack Overflow用户

发布于 2009-07-07 13:46:24

您还可以使用

代码语言:javascript
复制
bool isSet = ((value>>x) & 1) != 0;

编辑:"(value>>x) & 1“和"value & (1<<x)”之间的区别取决于当x大于"value“类型的大小(在您的例子中为32)时的行为。

在这种情况下,使用"(value>>x) & 1“会得到值的符号,而使用"value & (1<<x)”会得到0(如果x太大,有时获取位符号是很有用的)。

如果您希望在这种情况下使用0,则可以使用">>>“运算符,如果是">>

因此,"((value>>>x) & 1) != 0“和"(value & (1<<x)) != 0”是完全等价的

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1092411

复制
相关文章

相似问题

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