`(B AND 48)!=0`(AまたはBのどちらかが押された)と `(B AND 48)==48`(AとBの両方が押された)では 結果が変わってしまいますから、複数ボタンの判定には注意が必要ですよね。 その辺がややこしいと感じる場合は、けいさんの言われるように各ボタン個々の判定結果を&&,||で連結するようにした方が無難かなと思います。 ビット演算子(AND, OR)と論理演算子(&&, ||)の使い分けについては 「条件式中には比較演算をおく(ゼロとの比較を省略しない)」ことを徹底した上で - ビット演算子:数値どうしの計算を行うもの - 論理演算子:比較演算による結果どうしを組み合わせるもの という認識でいると間違えにくいかなと思っています。