「真理値」の解説

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
2022年04月22日 更新。
用語:真理値
用語の読み方:しんりち
同義語・類義語:論理値
このページで解説している他の用語:2値論理二値論理多値論理不定値不定Don't careドントケア

真理値(truth value)または論理値(logical value)とは、命題の真偽を表す値の事です。命題が正しい事を表している場合は、その命題の真理値は(true)となり、命題が正しくない事を表している場合は、その命題の真理値は(false)となります。

古典的な論理学において真理値は真または偽の値を取ります。この様に、真または偽の2種類の真理値のみを扱う論理の事を2値論理といいます。

一方で、真と偽以外にも、例えば「真か偽か分からない」状態を表す真理値を設けるなど、3種類以上の真理値を考える事があります。この様な論理を多値論理といいます。

目次

1. 2値論理について … 1ページ
1-1. 命題とその真理値の例 … 1ページ
1-2. 真理値を表す記号 … 1ページ
1-3. 2値論理回路における真理値と電圧の対応 … 1ページ
2. 多値論理について … 1ページ
2-1. 真と偽に不定値を加えた3値論理 … 1ページ
2-2. 真と偽にDon't careを加えた3値論理 … 1ページ
広告

1.2値論理について

まず2値論理について簡単に説明し、次に2値論理と2値論理回路の関係について説明します。

1-1.命題とその真理値の例

命題の例と、その命題の真理値を、表1に示します。

表1、命題の例とその真理値
命題 真理値
富士山は日本で一番高い山だ。
富士山は日本で2番目に高い山だ。
xを実数とする時、x<x+1が成立する。
xを実数とする時、x>x+1が成立する。
xを実数とする時、x>5ならばx>25が成立する。
犬は動物だ。
人間は爬虫類だ。

1-2.真理値を表す記号

論理学では、真の事をT、偽の事をFで表す事が多くあります。また電子工学では、真の事を1、偽の事を0で表す事が多くあります。

電子工学の場合、真理値の01は、2進数の1桁(1ビット)の値の01と同一視される事がしばしばあります。

1-3.2値論理回路における真理値と電圧の対応

真理値を2値論理回路内の電圧に対応させる時に、真を高い電圧のHに、偽を低い電圧のLに対応させる事が多いですが、この対応を正論理といいます。場合によっては真をLに、偽をHに対応させる事もありますが、この対応を負論理と呼びます。

2.多値論理について

電子工学の分野で、多値論理がどの様に使われているかを説明します。

2-1.真と偽に不定値を加えた3値論理

最初に説明したとおり、真と偽以外にも真理値を考えるのが多値論理です。多値論理には色々な形式が考えられますが、ここでは、真と偽以外に「真か偽か分からない」という真理値を考える3値論理について考えます。

「真か偽か分からない」という真理値の事を、電子工学の分野ではしばしば不定値(あるいは単に不定)と呼びます。不定値は英訳するとunknown value(あるいはundefined value)になりますので、Uの記号で表す事があります。(後述するDon't careと区別せずに、不定値をXの記号で表す事もありますが、この記事では不定値をUの記号で表す事にします)

2値論理回路において不定値は、例えばユーザーのボタン操作により真理値が変わる信号線で、ユーザーがどの様な操作をしているかが分からない場合や、電源投入後、まだリセット信号やクロック信号を入力していないDフリップフロップの出力信号等で発生します。(図1参照)

図1、Dフリップフロップの出力信号に現れる不定値
↑ 画像をクリックすると拡大
図1、Dフリップフロップの出力信号に現れる不定値

実際の2値論理回路の信号線の電圧を測った場合、電圧が低ければ真理値は0(偽)、電圧が高ければ真理値は1(真)になるので(ただし正論理の場合)、実際の回路においては真理値は0または1のいずれかの値になります。しかし、思考実験(シミュレーション)で回路の動作を考える時には、図1に示す様に、不定値を扱う必要が出てくるのです。

次に、図2に示す、2入力のAND回路に付いて考えます。

図2、2入力AND回路
↑ 画像をクリックすると拡大
図2、2入力AND回路

2値論理で考えると、2入力AND回路の真理値表は表2の様になります。

表2、2入力AND回路の真理値表(2値論理の場合)
入力 出力
A B Y
0 0 0
0 1 0
1 0 0
1 1 1

同じ2入力AND回路の真理値表を、不定値を含む3値論理で考えると、表3の様になります。

表3、2入力AND回路の真理値表(不定値を含む)
入力 出力
A B Y
0 0 0
0 1 0
0 U 0
1 0 0
1 1 1
1 U U
U 0 0
U 1 U
U U U

表3を見ると、A=0でB=Uの場合に、Y=0になっています。この様に、入力に不定値を含む場合でも、出力が01のどちらかに確定する場合があります。

2-2.真と偽にDon't careを加えた3値論理

今度は、真と偽に、「真と偽のどちらでも良い」という真理値を加えた3値論理について考えます。

「真と偽のどちらでも良い」という真理値を、電子工学ではしばしばDon't care(ドントケア)と呼びます。

Don't careを表す記号には、XD等が使われますが、この記事ではXでDon't careを表す事にします。

Don't careの説明のために、図3に示す2入力のOR回路について考えます。

図3、2入力OR回路
↑ 画像をクリックすると拡大
図3、2入力OR回路

01の2値論理で考えると、2入力OR回路の真理値表は表4の様になります。

表4、2入力OR回路の真理値表(Don't care不使用)
入力 出力 備考
A B Y
0 0 0 1行目
0 1 1 2行目
1 0 1 3行目
1 1 1 4行目

Don't care(X)を使うと、表4は、表5の様に簡略化できます。

表5、2入力OR回路の真理値表(Don't care使用)
入力 出力 備考
A B Y
0 0 0 1行目
0 1 1 2行目
1 X 1 3行目

この様に、Don't careを使うと、元々は4行の表を3行で表せる事が分かります。X0でも1でもいいのですから、表5の3行目は、表4の3行目と4行目の情報を1行で表したものになります。

2入力OR回路の場合は4行が3行になる程度の効果でしたが、図4に示すもっと複雑な回路では、真理値表が8行(表6参照)から4行(表7参照)へと、半分に減ります。

図4、OR回路とAND回路を組み合わせた3入力1出力回路
↑ 画像をクリックすると拡大
図4、OR回路とAND回路を組み合わせた3入力1出力回路
表6、図4の回路の真理値表(Don't care不使用)
入力 出力
A B C Y
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
表7、図4の回路の真理値表(Don't care使用)
入力 出力
A B C Y
0 X X 0
1 0 0 0
1 0 1 1
1 1 X 1

表5や表7の様に、真理値表の入力信号の欄にDon't careを使ったのは、真理値表を簡潔に表すためでした。大きな真理値表を書くのが嫌でなければ、別にDon't careを使わなくてもいい訳です。

今度は、真理値表の出力信号の欄にDon't careを使う話をします。この場合、表の簡略化とは違う効果が出ます。

ASICFPGAPLD等の論理設計をする際に、欲しい回路の真理値表を入力して、その真理値表通りに動作する論理回路を、コンピュータに自動生成させる事があります。今、表8の様に、出力信号にDon't careを含む真理値表を与えて、コンピュータに論理回路を自動生成させる事を考えます。

表8、出力信号にDon't careを含む真理値表
入力 出力
A B Y
0 0 0
0 1 1
1 0 1
1 1 X

この表では、AとBの両方に1を入力する時の出力がXになっています。これは、AとBの両方に1を入力する際に、0を出力する回路を作ってもいいし、1を出力する回路を作ってもいい事を表しています。(出力が不定になる訳ではありません)

この様な要求仕様は、例えばAとBに、同時には1が入力されない事が保証されている回路で発生する事があります。

AとBの両方に1を入力する際に0を出力する回路を生成する場合は、表9の真理値表に基づいて、図5に示すXOR回路を生成する事になります。

表9、AとBの両方に1を入力したら0を出力する回路の真理値表
入力 出力
A B Y
0 0 0
0 1 1
1 0 1
1 1 0
図5、表9の真理値表に基づいて生成したXOR回路
↑ 画像をクリックすると拡大
図5、表9の真理値表に基づいて生成したXOR回路

一方で、AとBの両方に1を入力する際に1を出力する回路を生成する場合は、表10の真理値表に基づいて、図6に示すOR回路を生成する事になります。

表10、AとBの両方に1を入力したら1を出力する回路の真理値表
入力 出力
A B Y
0 0 0
0 1 1
1 0 1
1 1 1
図6、表10の真理値表に基づいて生成したOR回路
↑ 画像をクリックすると拡大
図6、表10の真理値表に基づいて生成したOR回路

表9や表10の様に、Don't careを含まない自由度の低い真理値表を指定する場合は、コンピュータが生成できる回路が1種類しかありませんが、表8の様に、出力信号にDon’t careを含む自由度の高い真理値表を指定する場合は、コンピュータが複数の回路を生成でき、それらの中から最も性能の良い(動作速度が速い、使用部品が少ない等の)回路を選ぶ事ができます。

関連用語

関連ページ

Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。