テクノロジ編

【基本情報】論理演算と論理回路、ビット演算について解説

基本情報の勉強を進める上で、こんな悩みを抱いたことはありませんか?

  • 論理和、論理積、排他的論理和、否定ってなに?
  • ビット演算の考え方が分からない
お茶ん太
お茶ん太

この記事では、ITの知識が無い人でも、
基本情報で出てくる論理演算が分かる!
ビット演算が出来る!
ようになり、基本情報の論理演算とビット演算の問題なら解ける!が出来るようにします!

論理演算と論理回路

コンピュータは電気信号のオンとオフだけで情報を処理・表現します。
電気信号がオンの場合は1、オフの場合は0として処理します。

論理演算とは1と0だけで行う演算方法で、コンピュータはこの論理演算を使って様々な処理をしています。そして、論理演算を行うために使う回路を論理回路と言います
論理回路は回路に入ってきた電気信号に従って、電気を流すかどうか決定する回路です。

論理演算の基本形は論理積・論理和・排他的論理和・否定です。

論理積

論理積とは、AとBの両方に電気が流れているときだけ、電気を流す回路です
電気が流れている状態を1、電気が流れていない状態を0とすると、次の表のような結果になります。

論理和

論理和とは、AかBの少なくとも一方に電気が流れていれば、電気を流す回路です

排他的論理和

排他的論理和とは、AかBのどちらかだけに電気が流れていれば、電気を流す回路です

否定

否定とは、電気が流れてきたら電気を流さず、電気が流れてなければ電気を流す回路です

他の回路と否定を組み合わせる

他の回路と否定を組み合わせることがあります。この場合、元の回路と真逆の結果になります。例えば、論理積と否定を組み合わせた否定論理積は論理積と真逆の結果になります。

論理演算を使った計算の例

2進数の1桁+1桁の計算を論理回路でやってみましょう
2進数の1桁+1桁の計算は次の4パターンしかありません。

(1) 0+0=00
(2) 0+1=01
(3) 1+0=01
(4) 1+1=10

これを表にすると、こうなります。

よく見てみると、答えの1桁目は排他的論理和で、2桁目は論理積になっていますね。
なので、1桁+1桁の足し算をしたければ、次のような回路を組めば良いと分かります。

ビット演算

ビット列とは0と1を寄せ集めたものです。「00110101」みたいなものがビット列です。このビット列に対して「特定のビット列」を論理演算させることで、ビット列の一部を取り出したり反転することが出来ます。これがビット演算です。

ビット列の取り出し

ビット列を取り出すためには、1で論理積を取ります。

例えば、ビット列「00110110」の下4桁である「0110」だけを取り出すためには、「00001111」との論理積を取ります。

組み合わせるビット列が0の部分は、結果も0になり、
組み合わせるビット列が1の部分は、元のビット列と同じ結果になるので、
下4桁のビット列が取り出せていることが分かります。

ビット列の反転

ビット列を反転するためには、1で排他的論理和を取ります

例えば、ビット列「00110110」の0と1を反転して「11001001」にするためには、「11111111」との排他的論理和を取ります。

元のビット列が0の部分は、結果が1になり、
元のビット列が1の部分は、結果が0になるので反転出来ていることが分かります。

基本情報、出るところだけまとめ!

論理演算と論理回路

論理積:入力値の全てが「1」なら「1」を出力。それ以外は「0」を出力。

論理和:入力値の内1つでも「1」なら「1」を出力。「1」が無ければ「0」を出力。

排他的論理和:入力値に「0」と「1」の両方があれば「1」を出力。片方しか無ければ「0」を出力。

否定:入力値が「1」なら「0」を出力。入力値が「0」なら「1」を出力。

論理積、論理和、排他的論理和にそれぞれ否定を組み合わせると、出力結果がそれぞれ反転する。例えば、否定論理積は入力値の全てが「1」なら「0」を出力。それ以外は「1」を出力になる。

ビット演算

ビット列を取り出すには、1で論理積を取る。

ビット列を反転するには、1で排他的論理和を取る。

基本情報技術者試験での出題例

令和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+AB
エ 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の論理積になるので、答えはアになります。