この記事では論理演算とビット演算についてIT初心者にも分かりやすく解説します。
論理演算とは
- 論理演算の基本形には論理積・論理和・排他的論理和・否定がある。
論理積:入力値の全てが「1」なら「1」を出力。それ以外は「0」を出力。
論理和:入力値の内1つでも「1」なら「1」を出力。
それ以外は「0」を出力。
排他的論理和:入力値に「0」と「1」があれば「1」を出力。
それ以外は「0」を出力。
否定:入力値が「1」なら「0」を出力。入力値が「0」なら「1」を出力。 - 論理積・論理和と否定を組み合わせた否定論理積・否定論理和がある。
- 「00110101」のような0と1を寄せ集めたものをビット列と言う。
- ビット列に対して特定のビット列を演算すると、ビット列の反転や取り出しが出来る。
基本情報では論理演算とビット列に関する問題が頻出します。是非最後までご覧ください。
論理演算
論理演算とは、「真(True)」か「偽(False)」の結果を返す演算です。真を1、偽を0と表現します。
論理演算には色々な種類があります。
基本の4つの論理演算
論理積(AND)
論理積は入ってくる2つの命題が両方とも1の場合は1を、それ以外は0を返す演算子です。
「運営責任者の田中さんと山田さんの2人が来たら会場の設営を開始する。どちらか1人でも来ていなければ設営は開始しない」が論理積です。
論理和(OR)
論理和は入ってくる2つの命題のうち、どちらか一方でも1の場合は1を、それ以外は0を返す演算子です。
「運営責任者の田中さんと山田さんのどちらか1人でも来たら会場の設営を開始する。2人とも来ていなければ設営は開始しない」が論理和です。
排他的論理和(XOR)
排他的論理和は入ってくる2つの命題のうち、どちらか一方が1の場合は1を、それ以外は0を返す演算子です。論理和との違いは両方が1の場合の挙動です。両方が1の場合、論理和は1を返し、排他的論理和は0を返します。
「運営責任者の田中さんと山田さんが来たら会場の設営を開始する。ただし、田中さんと山田さんは凄く仲が悪いので2人が揃ってしまうと喧嘩が始まり、会場の設営は始まりません」が排他的論理和です。
否定(NOT)
否定で入力する命題は1つです。入ってきた命題が1なら0を、0なら1を返す演算子です。
「映画上映中はスマホの電源を切る。映画の上映が終わったらスマホの電源を付ける」が否定です。
論理積・論理和と否定の組み合わせ
否定論理積(NAND)
否定論理積は、論理積の結果を否定する演算子です。
論理積では、AとBの両方が1の場合は1を返します。なので否定論理積では1の否定の0を返します。
否定論理和(NOR)
否定論理和は、論理和の結果を否定する演算子です。
論理和では、Aが0でBが1の場合は1を返します。なので否定論理和では1の否定の0を返します。
ビット演算
ビット列とは0と1を寄せ集めたものです。「00110101」みたいなものがビット列です。このビット列に対して「特定のビット列」を演算させることでビット列を取り出したり反転することが出来ます。
ビット列の取り出し
ビット列を取り出すためには、1で論理積を取ります。
例えば、ビット列「00110110」の下4桁である「0110」だけを取り出すためには、「00001111」との論理積を取ります。
ビット列の反転
ビット列を反転するためには、1で排他的論理和を取ります。
例えば、ビット列「00110110」の0と1を反転して「11001001」にするためには、「11111111」との排他的論理和を取ります。
基本情報技術者試験での出題例
令和6年度問1
基本情報技術者
科目A 令和6年度問1
X及びYはそれぞれ0又は1の値をとる変数である。X□YをXとYの論理演算としたとき,次の真理値表が得られた。X□Yの真理値表はどれか。
正解は”ウ”
●X AND (X□Y)を考える
①と②:X=0, X AND (X□Y)=0なので、X□Yは0か1か分かりません。
③:X=1, X AND (X□Y)=0なので、X□Yは0だと分かります。
④:X=1, X AND (X□Y)=1なので、X□Yは1だと分かります。
●X OR (X□Y)を考える
①と②:X=0, X OR (X□Y)=1なので、X□Yは1だと分かります。
③と④:X=1, X OR (X□Y)=1なので、X□Yは0か1か分かりません。
上記をまとめると、こうなります。よって答えはウです。
令和元年度秋期問2
基本情報技術者
午前試験 令和元年度秋期問2
8ビットの値の全ビットを反転する操作はどれか。
ア 16進表記 00 のビット列と排他的論理和をとる。
イ 16進表記 00 のビット列と論理和をとる。
ウ 16進表記 FF のビット列と排他的論理和をとる。
エ 16進表記 FF のビット列と論理和をとる。
正解は”ウ”
16進表記の00のビット列は「00000000」
16進表記のFFのビット列は「11111111」です。
ビットを反転するには1で排他的論理和を取るので答えはウです。
令和元年度秋期問22
基本情報技術者
午前試験 令和元年度秋期問22
次の回路の入力と出力の関係として,正しいものはどれか。
正解は”イ”
A=0,B=0の場合
A=0,B=1の場合
A=1,B=1の場合
平成31年度春期問2
基本情報技術者
午前試験 平成31年度春期問2
最上位をパリティビットとする8ビット符号において,パリティビット以外の下位7ビットを得るためのビット演算はどれか。
ア 16進数0FとのANDをとる。
イ 16進数0FとのORをとる。
ウ 16進数7FとのANDをとる。
エ 16進数FFとのXOR(排他的論理和)をとる。
正解は”ウ”
16進数の0Fのビット列は「00001111」
16進数の7Fのビット列は「01111111」
16進数のFFのビット列は「11111111」です。
ビット列を取り出すには1で論理積(AND)を取れば良いので答えはウです。
サンプル問題問3、平成31年度春期問3
基本情報技術者
科目A サンプル問題問3、午前試験 平成31年度春期問3
P,Q,Rはいずれも命題である。命題Pの真理値は真であり,命題 (not P) or Q 及び命題 (not Q) or R のいずれの真理値も真であることが分かっている。Q,Rの真理値はどれか。ここで,X or Y は X と Y の論理和,not X は X の否定を表す。
正解は”エ”
Pは真なので、not Pは偽です。(not P) or Qが真なので、Qは真です。
Qは真なので、not Qは偽です。(not Q) or Rが真なので、Rは真です。
平成31年度春期問22
基本情報技術者
午前試験 平成31年度春期問22
二つの入力と一つの出力をもつ論理回路で,二つの入力A,Bがともに1のときだけ,出力Xが0になるものはどれか。
ア AND回路 イ NAND回路
ウ OR回路 エ XOR回路
正解は”イ”
入力された命題の2つが1の時だけ出力が0になるのはNAND回路です。
平成30年度秋期問2
基本情報技術者
午前試験 平成30年度秋期問2
次に示す手順は,列中の少なくとも一つは1であるビット列が与えられたとき,最も右にある1を残し,他のビットを全て0にするアルゴリズムである。例えば,00101000が与えられたとき,00001000が求まる。aに入る論理演算はどれか。
手順1 与えられたビット列Aを符号なしの2進数と見なし,Aから1を引き,結果をBとする。
手順2 AとBの排他的論理和(XOR)を求め,結果をCとする。
手順3 AとCの【 a 】を求め,結果をAとする。
ア 排他的論理和(XOR)
ウ 論理積(AND)
イ 否定論理積(NAND)
エ 論理和(OR)
正解は”ウ”
●手順1
まずBを求めます。
00101000 – 00000001 = 00100111(…B)
●手順2
Cを求めます。CはAとBの排他的論理和なので、
A=00101000
B=00100111
C=00001111
になります。
●手順3
最後に算出する答えをA’とします。
A=00101000
C=00001111
A’=00001000
になります。A’はAとCの論理積なので、答えはウです。
平成30年度秋期問22
基本情報技術者
午前試験 平成30年度秋期問22
2入力NAND素子を用いて4入力NAND回路を構成したものはどれか。
正解は”イ”
4入力NAND回路では、
・入力された値が全て1の場合⇒0を出力
・入力された値に1つでも0がある場合⇒1を出力
します。
●入力された値が全て1の場合、0を出力するのがNAND回路です。イとエが0を出力するので、答えはイかエ。
●「1010」と入力した場合、1を出力するのがNAND回路です。イが1を出力するので、答えはイです。
平成30年度春期問23
基本情報技術者
午前試験 平成30年度春期問23
真理値表に示す3入力多数決回路はどれか。
正解は”ア”
A=0,B=0,C=1を入力したとき、出力されるYはそれぞれ以下になります。
よって答えはアです。
ちなみに、他の組み合わせでは下の表のようになります。
平成29年度秋期問23
基本情報技術者
午前試験 平成29年度秋期問23
図に示すディジタル回路と等価な論理式はどれか。ここで,論理式中の”・”は論理積,”+”は論理和,XはXの否定を表す。
ア X=A・B+A・B
ウ X=A・B+A・B
イ X=A・B+A・B
エ X=(A+B)・(A+B)
正解は”ウ”
ディジタル回路のAとBに0と1を入力すると何を出力するのかをまず確かめます。
この結果をまとめると下表になります。
次にアからエの論理式を確認してみましょう。
ディジタル回路と同じ出力結果になっているのはウです。
平成29年度春期問3
基本情報技術者
午前試験 平成29年度春期問3
XとYの否定論理積 X NAND Yは,NOT(X AND Y)として定義される。X OR YをNANDだけを使って表した論理式はどれか。
ア ((X NAND Y) NAND X) NAND Y
イ (X NAND X) NAND (Y NAND Y)
ウ (X NAND Y) NAND (X NAND Y)
エ X NAND (Y NAND (X NAND Y))
正解は”イ”
●X=0,Y=0のとき
ア:((0 NAND 0) NAND 0) NAND 0
=(1 NAND 0) NAND 0 【0 NAND 0=1なので】
=1 NAND 0 【1 NAND 0=1なので】
=1
イ:(0 NAND 0) NAND (0 NAND 0)
=1 NAND 1 【0 NAND 0=1なので】
=0
ウ:(0 NAND 0) NAND (0 NAND 0)
=1 NAND 1 【0 NAND 0=1なので】
=0
エ:0 NAND (0 NAND (0 NAND 0))
=0 NAND (0 NAND 1) 【0 NAND 0=1なので】
=0 NAND 1 【1 NAND 0=1なので】
=1
X OR YはX=Y=0のとき、0になります。
よって、この時点でイかエが答えになります。
●X=1,Y=0のとき
イ:(1 NAND 1) NAND (0 NAND 0)
=0 NAND 1
=1
ウ:(1 NAND 0) NAND (1 NAND 0)
=1 NAND 1
=0
X OR YはX=1,Y=0のとき、1になります。
よって、イが答えになります。
平成29年度春期問22
基本情報技術者
午前試験 平成29年度春期問22
図に示す,1桁の2進数xとyを加算して,z(和の1桁目)及びc(桁上げ)を出力する半加算器において,AとBの素子の組合せとして,適切なものはどれか。
正解は”ア”
入力するx,yと出力するz,cの組み合わせは下表のようになるべきです。
x+yの和の1桁目(z)=1になるのは、xとyのどちらかが1の場合です。
また、桁上げ(c)=1になるのは、xとyの両方が1の場合です。
よって、zはxとyの排他的論理和、cはxとyの論理積になるので、答えはアになります。
基本情報に関するの他の記事
ハードウェア | ソフトウェア | システム構成 |
ネットワーク | データベース | 開発手法 | 情報セキュリティ |
ハードウェアに関する記事
基数についての記事
【基本情報】コンピュータが理解できるのは0と1だけ?!
【基本情報】2進数と10進数を変換する方法を解説
【基本情報】2の補数について分かりやすく解説!
【基本情報】16進数とコンピュータは相性が良い
【基本情報】16進数と10進数を変換する方法を解説
情報の単位についての記事
【基本情報】ビットとバイトとは何か、1バイト=8ビットの理由も解説
論理演算についての記事
【基本情報】論理演算と論理回路について解説
コンピュータの五大装置についての記事
【基本情報】コンピュータってなにで出来ている?-五大装置を解説
【基本情報】クロック周波数とは?なぜ必要なの?
【基本情報】RAMとROMの特徴と違いについて解説
【基本情報】キャッシュメモリについて解説