基本情報技術者試験で出てくる2進数の論理演算問題の解き方で毎回混乱するので、
の解き方をいつでも確認できるようにまとめておく。
前提知識
コンピュータは電気のオン・オフで動くので、データを「0」「1」の2種類の値で扱っている。
- 0→OFF(false)
- 1→ON(true)
コンピュータがデータを計算をすることを「論理演算」といい、その論理演算には「AND」、「OR」、「NOT」、「XOR」、「NAND」といった種類がある。
これらの計算問題が試験で出題される。
参考:【5分で覚えるIT基礎の基礎】あなたは論理演算がわかりますか? 第1回 | 日経クロステック(xTECH)
論理演算と四則演算の大きな違いは,論理演算が2進数の1けた(=1ビット)を対象としていることと,演算結果が決してけた上がりしないことです。
ちなみに2進数は8桁で表されるので、試験問題において8桁に満たないときは8桁になるまで頭に0が付く。(0埋めされる)
AND
A, Bともに「1」のときのみ「1」を返す。
- 1かつ1の場合:1
- 上記以外:0
例題
A = 00101000(10進数で40)
B = 00100111(10進数で39)
のとき、A AND B は?
解説
2つの2進数の同じ桁同士を比べる。
8桁目 | 7桁目 | 6桁目 | 5桁目 | 4桁目 | 3桁目 | 2桁目 | 1桁目 |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
⇒ 00100000 となる。 |
OR
A, Bの少なくとも一方が「1」のとき「1」を返す。
- 片方に1がある場合:1
- どちらにも1がない場合:0
例題
A = 00101000(10進数で40)
B = 00100111(10進数で39)
のとき、A OR B は?
解説
2つの2進数の同じ桁同士を比べる。
8桁目 | 7桁目 | 6桁目 | 5桁目 | 4桁目 | 3桁目 | 2桁目 | 1桁目 |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
⇒ 00101111 となる。 |
NOT
逆を返す。
1なら0に、0なら1に反転。
例題
A = 00101000(10進数で40)
のとき、NOT A は?
解説
単純に反転させれば良いので、
11010111 となる。
XOR
A, Bのどちらか一方だけが「1」のとき「1」を返す
- 2つの値が異なる場合:1
- 2つの値が同じ場合:0
例題
A = 00101000(10進数で40)
B = 00100111(10進数で39)
のとき、A XOR B は?
解説
2つの2進数の同じ桁同士を比べる。
8桁目 | 7桁目 | 6桁目 | 5桁目 | 4桁目 | 3桁目 | 2桁目 | 1桁目 |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
⇒00001111 となる。 |
NAND
NOT AND なので、ANDの逆を出せば良い。
試験ではNANDが大量に入った演算をさせられるけど、落ち着いて以下で計算するかANDの逆を出せばOK。
- 1かつ1の場合:0
- 上記以外:1
例題
A = 00101000(10進数で40)
B = 00100111(10進数で39)
のとき、A NAND B は?
解説
2つの2進数の同じ桁同士を比べる。
8桁目 | 7桁目 | 6桁目 | 5桁目 | 4桁目 | 3桁目 | 2桁目 | 1桁目 |
---|---|---|---|---|---|---|---|
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
⇒11011111 となる。 |
ANDから計算する場合は、まずANDが
- 1かつ1の場合:1
- 上記以外:0
なので、 00100000 となる。
その逆を求めれば良いので、 11011111 となる。