条件演算子とビット演算子

条件演算子とビット演算子の違いは、プログラミング言語の最初に出てくる項目のため、機能を丸暗記してしまって理解しないままの場合が多いと思います。
私もWebの開発で「&」や「|」を利用する機会がないので、曖昧なままです。二つの演算子の説明で一般的な論を知りませんが、私が教わったのは以下のようなものです。まず、次の二つのコードがあるとします。

int a = 50;
if (a > 0 & a < 100) {
System.out.println("true");
}
int a = 50;
if (a > 0 && a < 100) {
System.out.println("true");
}

この場合では、どちらもif文の真偽値はtrueなのでifブロックが実行されます。この違いの説明としては、「&」の場合はまず左を判定した後に必ず右も判定するが、「&&」の場合は左がfalseの場合は右を判定する必要がないので、その時点で結果をfalseと判定してifブロックを実行しない、というものです。
その通りですが、この説明はあまり意味のない説明だと思います。少なくとも私はこの説明の為にいつまでたっても「&」の現実味が沸きません。
その理由は、上記のような例では常に「&&」と書けば解決するので、「&」の存在価値が解らないからです。そもそもif文で例を出すのが良くないのかとも思います。
私の認識ではビット演算子は計算です。ビット演算の計算は縦でイメージすると解り易いのですが、1バイトのデータ同士を「&」で計算すると

10101010
10000010

コメントする

メールアドレスが公開されることはありません。