java - 不能使用 == 代替一元 & 来检查两个值是否相等

标签 java boolean bit-manipulation operator-keyword

最近我在一本书中发现了一个代码片段,它为这样的字段设置了一个 Boolean

输入标识符字符串列表

if (identifier.size() >= 2) {
    int c = Integer.parseInt(identifier.get(1));
    bulk = (c & 4) == 4;
    hazardous = (c & 2) == 2;
    toxic = (c & 1) == 1;
}

这里需要什么一元 & 运算符?这不能使用简单的方法来完成吗? c==4 等而不是 (c & 4)== 4

最佳答案

不,这是按位运算。

想象一下c=7。在这种情况下,所有条件都成立。

c = 7;
bulk = (c & 4) == 4; // true
hazardous = (c & 2) == 2; //true
toxic = (c & 1) == 1; //true

在二进制中,你会得到这样的:

c = 0111; //4-bit to simplify output
bulk = (c & 0100) == 0100; //
hazardous = (c & 0010) == 0010; //true
toxic = (c & 0001) == 0001; //true

由于按位与 (&),您会得到 0111 & 0010 = 0010 等。

关于java - 不能使用 == 代替一元 & 来检查两个值是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443667/

相关文章:

JAVA boolean 变量不会随着Switch语句而改变

c++ - 优先队列功能比较

c++ - 优化条件的方法 "if (m == 0 || n == 0)"

java - 使用 BITwise 运算实现二维数组

php - 权限:按位运算还是多对多子表?

java - 使用 JPA 为 Wildfly 构建 Java Web 应用程序失败?

Java静态变量的继承

c++ - 使用 If 语句处理 boolean 值

java - 使用 BigDecimal 计算欧元价格

java - 当循环卡住程序时继续计算并在计算之间暂停