AND・OR・NOT・XOR は、コンピュータが「はい/いいえ」を組み合わせて判断するための基本ルールです。真理値表とビット演算、シフト演算までをまとめて整理します。
論理演算って、なんだか難しそうですぅ…。
数学っぽい記号がいっぱい出てくるイメージなのぉ。
ふふ、見た目ほど難しくないのよ。
要は『はい』と『いいえ』の組み合わせを決めるルールなの。
コンピュータは『はい=1』『いいえ=0』の2つしか知らないでしょう?
あー、傘の話みたいなやつ?
『雨が降ってる、かつ、出かける』なら傘を持つ、みたいな。
まさにそれよ。
『AかつB』がAND。
『AまたはB』がOR。
これが土台ね。
補足すると、論理演算は全部で4つ押さえれば十分です。
AND・OR・反転のNOT・そしてXOR。
試験はこの4つから出ます。
よっつ…。
AND と OR はなんとなくわかったんですけど、NOT と XOR がまだあやふやですぅ。
NOT は簡単じゃん。
1を入れたら0、0を入れたら1。
ひっくり返すだけでしょ?
そのとおりです。
NOT は入力が1つだけの演算で、入った値を逆にするだけ。
問題は XOR ですね。
XOR は『2つが同じなら0、違うなら1』と覚えると一発です。
電気のスイッチで考えるとわかりやすいわ。
階段の照明、上と下のスイッチどちらでも点け消しできるでしょう?
あれがまさに XOR の動きなのよ。
どちらか片方を切り替えると状態が変わる。
マジか、あれ論理演算だったのか!
身近すぎてびっくりした。
真理値表で並べると違いが一目でわかります。
1 AND 1=1、1 AND 0=0。
1 OR 0=1、0 OR 0=0。
1 XOR 1=0、1 XOR 0=1。
ANDは厳しくて、ORは優しくて、XORはへそ曲がり、と覚えるのもありです。
ANDは厳しい…たしかに、両方そろわないと真にならないですもんねぇ。
ふふ、覚えやすいですぅ。
その調子よ。
さて、ここからが試験のポイント。
論理演算は2進数に対して『各桁ごとに』適用するの。
これを覚えておくと計算問題で迷わないわ。
たとえば 1011 AND 1100 を考えてみましょう。
桁を縦にそろえて、上から AND していくの。
結果は 1000 になるわ。
あ、ホントだ。
1と1で1、0と1で0…って各桁を別々に計算するだけじゃん。
じゃあ OR だと?
1011 OR 1100 = 1111 です。
ORはどちらかが1なら1なので、全部の桁が埋まります。
ちなみに 1011 XOR 1100 = 0111 ですね。
違う桁だけ1が立ちます。
桁ごとにやればいいだけなら、わたしでもできそうですぅ!
その意気よ。
最後にもう一つ仲間を紹介するわ。
ビット列をまるごと横にずらすシフト演算。
左に1ビットずらすと値は2倍、右に1ビットずらすと半分になるの。
ずらすだけで掛け算と割り算ができるってこと?
なんか得した気分だよね。
10進数で末尾に0を付けると10倍になるのと同じ理屈です。
2進数の世界では桁が1つ上がると2倍ですから、左シフト1回=2倍。
たとえば 1011(=11)を左に1ビットシフトすると 10110(=22)になります。
ふふ、よくまとまったわね。
論理演算は『はい/いいえの組み合わせルール』、ビット演算は『2進数を桁ごとに加工する道具』。
この2つの視点で整理すれば、試験の計算問題はもう怖くないわよ。
確認クイズ
2進数「1010」と「0110」の排他的論理和(XOR)の結果として正しいものはどれか。
- 0000
- 0010
- 1100
- 1110
こたえを見る
正解: 3. 1100
XORは各桁を比べて、値が異なるときだけ1になる。1010 XOR 0110 を各桁で見ると、1けた目:1と0で異なるので1、2けた目:0と1で異なるので1、3けた目:1と1で同じなので0、4けた目:0と0で同じなので0。よって結果は1100。0010は同じ2数のAND(論理積)の結果、1110はOR(論理和)の結果なので、いずれもXORでは不正解。0000はどの演算結果にも当てはまらない。