Java:用位运算检查标志

3

我正在尝试检查一个数字是否具有第二位标志(即0000 0010)。我的代码如下:

int flags = Integer.parseInt(fields[1]);
String strflags = Integer.toBinaryString(flags);
flags = Integer.parseInt(strflags);
int secondBitTest = Integer.parseInt("00000010", 2);
if((flags & secondBitTest) == 2) {
    System.out.println("YES");
}

然而,我认为我可能做错了,因为当我尝试输入147时,没有返回任何结果。


你为什么不直接使用标准二进制运算符呢?flags&0b10 - SBI
1个回答

2

我在这里找到了一个代码,您可以使用它来检查是否设置了任何位 (链接)

if (x & (1<<n) != 0) {
  //n-th bit is set
}
else {
  //n-th bit is not set
}

x 是你想要检查的数字,n 是你想要检查的位。该算法通过将数字 1 左移 n 位,并使用与 x 进行 AND 操作来工作。


你对 & 的优先级和比较操作弄错了(最好使用 != 0)。 - starblue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接