我正在尝试使用java的Bitwise &运算符,我想我滥用它。使用下面的例子,在messageAddress为7时,满足条件1和条件3。 7的messageAddress不应该满足第三个条件,而不是第一个?有关如何更改以下逻辑的任何想法,以便7的messageAddress只能满足最后一个条件?Java按位与运算符匹配多个条件
public static final int SLOW = 1;
public static final int SMEDIUM = 2;
public static final int SHIGH = 3;
String messageAddressHex="7";
int messageAddress = Integer.parseInt(messageAddressHex, 16);
if ((messageAddress & SLOW) == SLOW) {
//condition 1 met logic
} else if ((messageAddress & SMEDIUM) == SMEDIUM) {
//condition 2 met logic
} else if ((messageAddress & SHIGH) == SHIGH) {
//condition 3 met logic
}
我建议使用,而不是十进制数二进制数,这样它更容易看到你的位操作是如何去上班。只是使用2的幂,这将简化事情。 –
(我发现十六进制文字更好;比小数更容易处理,因为它们与位对齐,并且它们在Java中被支持为文字,否则,必须“parseInt(binary,2)”或类似的位移位。方便,但:'1 << 3',例如) – 2012-09-13 23:58:59