論理演算って何?ANDやORは覚えたけど,問題になると解けない…。そんな方に向けて,この記事では集合と論理演算・論理回路を「つながり」で理解できるようシンプルに解説します。基本情報技術者試験でも頻出の重要分野なので,ここでしっかり整理しておきましょう。
- 集合=条件を満たす要素の集まり
- 論理演算=真偽(1/0)を扱う計算方法
集合とは(意味・表現・ベン図の基本)
集合とは,ある条件を満たすものが集まったグループのことをいいます。たとえば,1から10までの自然数の集合をA,その中で2の倍数の集合をB,3の倍数の集合をCとした場合,ベン図は次のようになります。
※ ベン図については後述
集合の演算(和・積・補・差・対称差)
和集合( A∪B )とは
2つの集合を足し合わせた部分です。
※ AまたはBのどちらか一方,または両方に含まれる要素の集合
積集合( A∩B )とは
2つの集合に共通する部分です。
※ AとBの両方に共通して含まれる要素の集合
補集合(A)とは
ある集合に含まれない部分です(否定)。
※ 全体集合の中で,ある集合に含まれない要素の集合
差集合( A-B )とは
ある集合から,別の集合を引いた部分です。
※ Aに含まれるが,Bには含まれない要素の集合
対称差集合( A△B )とは
2つの集合を足し合わせた部分から,共通する部分を引いた部分です。
※ AまたはBのどちらか一方にのみ含まれる要素の集合
広告
論理演算と論理回路とは(OR・AND・NOTと論理回路の関係)
論理演算とは,ある命題が真(true)であるか偽(false)であるかを示す値(論理値)を扱う演算のことをいいます。コンピューターでは真を1,偽を0として処理します。論理回路は,この論理演算を実際の回路として実現したものです。
※ 論理演算のことをブール演算,論理値のことをブール値ともいう
論理和(OR)とは
論理和は,与えられた2つ以上の命題で,少なくとも1つが真の場合に結果が真となる論理演算です。命題(入力)が2つの場合の論理式,真理値表,ベン図,論理回路は次のとおりです。
- 命題
- 真または偽という性質(真理値)をもつ文のこと
- 真理値表
- 論理演算の入力と出力(結果)をまとめた表
- ベン図
- 集合間の関係を図で表したもの
- 論理回路
- 論理演算を行うための電子回路
論理積(AND)とは
論理積は,与えられた2つ以上の命題のすべてが真の場合に結果が真となる論理演算です。命題(入力)が2つの場合の論理式,真理値表,ベン図,論理回路は次のとおりです。
否定(NOT)とは
否定は,与えられた命題が真の場合に結果が偽となり,偽の場合に結果が真となる論理演算です。論理式,真理値表,ベン図,論理回路は次のとおりです。
否定論理和(NOR)とは
否定論理和は,与えられた2つ以上の命題のすべてが偽の場合に結果が真となる論理演算です。命題(入力)が2つの場合の論理式,真理値表,ベン図,論理回路は次のとおりです。
※ OR(論理和)の結果を否定(NOT)した論理演算である
否定論理積(NAND)とは
否定論理積は,与えられた2つ以上の命題のすべてが真の場合に結果が偽となる論理演算です。命題(入力)が2つの場合の論理式,真理値表,ベン図,論理回路は次のとおりです。
※ AND(論理積)の結果を否定(NOT)した論理演算である
排他的論理和(XOR,EOR,EXOR)とは
排他的論理和は,与えられた2つ以上の命題で真となるものが奇数個の場合に結果が真となる論理演算です。命題(入力)が2つの場合の論理式,真理値表,ベン図,論理回路は次のとおりです。
論理演算の性質
論理演算の性質は次のとおりですが,丸覚えするのではなく,真理値表やベン図を使ってひとつひとつ理解するよう努めてください。
基本法則(同一律・零律など)
交換則(AND・OR の順序不変)
結合則(括弧の自由度)
分配則
吸収則
べき等則
ド・モルガンの法則
広告
ビット列の操作(AND/OR/XOR を使った例)
ビットマスクとは(特定ビットの抽出法)
あるビット列から特定の桁(ビット)を取り出す場合は,取り出したい桁を1,それ以外の桁を0とした(マスクした)ビット列とAND演算します。
※ AND演算では,1の部分はそのままで,0の部分は必ず0になる ⇒ 特定のビットだけを取り出せる
ビットのセットとは(1を立てる操作)
あるビット列の特定の桁(ビット)を1にする場合は,その桁を1としたビット列とOR演算します。
※ OR演算では,1の部分は必ず1になる ⇒ 指定したビットを1にすることができる
ビットの反転とは(1⇔0の切替え)
あるビット列の特定の桁(ビット)を反転する場合は,その桁を1としたビット列とXOR演算します。
※ XOR演算では,1の部分は反転し,0の部分は元の値のままとなる
すべての桁を反転する場合はNOT演算を利用します。
※ XORでも可能だが,通常はNOTを使う
ビット列のクリアとは(0に戻す操作)
あるビット列の特定の桁(ビット)をクリアする(0にする)場合は,クリアしたい桁を0,それ以外の桁を1としたビット列とAND演算します。
※ 0を代入する方法もある
また,同じビット列とXOR演算することで,すべての桁(ビット)をクリアすることもできます。
※ XOR演算では,同じ値同士を演算すると必ず0になる ⇒ すべてのビットを0にすることができる
広告
加算器とは(1桁の二進加算回路)
加算器とは,2進数1桁の加算を行う回路です。
半加算器とは(繰り上がりなしの加算)
半加算器は,下位の桁からの桁上がりを考えなくてもよい場合(最下位桁の加算)に使用する回路です。入力A,入力B,出力S(Sum),桁上がりC(Carry Out)とした場合の真理値表,論理回路は次のとおりです。
全加算器とは(繰り上がりを考慮する回路)
全加算器は,下位の桁からの桁上がりがある場合(最下位桁以外の加算)に使用する回路です。入力A,入力B,下位の桁からの桁上がりC’,出力S(Sum),桁上がりC(Carry Out)とした場合の真理値表,論理回路は次のとおりです。
まとめ
今回は,集合と論理演算・論理回路を中心に,ビット列の操作や加算器までをシンプルにまとめてみました。重要なのは,集合と論理演算を別々に覚えるのではなく,「ベン図」,「真理値表」,「論理回路」を対応づけて理解することです。たとえば,和集合とOR,積集合とANDのように,概念同士を結び付けて整理することで,問題への対応力が大きく向上します。また,ド・モルガンの法則などの基本性質についても,丸暗記ではなく,具体例を通して理解しておくことが重要です。さらに,ビット列の操作(マスク,セット,反転,クリア)や加算器のしくみは,計算問題や応用問題で問われやすいため,手を動かして確認しておくと効果的です。論理回路についても,入力と出力の関係を自分で書き出せるレベルまで理解しておきましょう。
理解が進んだら,基本情報技術者試験の過去問題にもチャレンジしてみてください。


