我正在嘗試使用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