論理演算・真理値表ツール【無料・登録不要】論理式からAND・OR・NOT・XORの真理値表を作成|同値判定・ド・モルガンの法則
論理式を入力すると、真理値表(しんりちひょう)を作る無料ツールです。AND・OR・NOT・XOR・NAND・NOR の英単語のほか、∧ ∨ ¬ ⊕ の記号や「A・B」「A + B」のような書き方にも対応しています。どの順番で計算したかを括弧付きで表示するので、演算子の優先順位の確認にも使えます。
2 つの論理式が同じ結果になるか(同値か)の判定や、ド・モルガンの法則などの例ボタンもあり、基本情報技術者試験・応用情報技術者試験の論理演算の学習に使えます。入力した式はお使いのブラウザの中だけで処理され、サーバーには一切送信されません。
使える書き方と計算の順番
計算の順番(優先順位):NOT > AND・NAND > XOR > OR・NOR。同じ順位の演算子は左から順に計算します。順番を変えたいときは括弧 ( ) を使ってください。
- NOT(否定):
NOT A、¬A、!A、~A、A'(上線の代わり) - AND(論理積):
A AND B、A ∧ B、A・B、A & B、A * B、AB(省略) - OR(論理和):
A OR B、A ∨ B、A + B、A | B - XOR(排他的論理和):
A XOR B、A ⊕ B、A ^ B - NAND:
A NAND B、A ↑ BNOR:A NOR B、A ↓ B - 変数は A〜E の 5 つまで(小文字も可)。定数の 0 と 1 も使えます。英単語の演算子は大文字・小文字のどちらでも書けます
入力した式はブラウザ内だけで処理し、サーバーへの送信や保存は一切行いません。
使い方
真理値表を作る
- 「論理式」の欄に式を入力します(例:
A + B・C)。 - 入力と同時に、真理値表が表示されます。変数(A〜E)のすべての 0 と 1 の組み合わせについて、式の結果が 0 か 1 かがわかります。
- 表の上には「
A + B・CはA + (B・C)と解釈しました」のように、どの順番で計算したかが括弧付きで表示されます。思っていた順番と違うときは、括弧を付けて入力し直してください。
変数は A〜E の 5 つまで使えます(小文字の a〜e でも入力できます)。変数が n 個のとき、表は 2 の n 乗行になり、5 つ使うと 32 行です。0 と 1 の定数も使えます。「途中の式の列も表示する」にチェックを入れると、B・C のような途中の計算結果の列も並ぶので、手で真理値表を書くときの確認に便利です。「表をコピー」を押すと、タブ区切りの形でコピーされ、Excel やスプレッドシートにそのまま貼り付けられます。
使える書き方と計算の順番
同じ演算でも、本や分野によって書き方が違います。このツールでは、次の書き方をどれでも使えます(混ぜて書くこともできます)。
| 演算 | 読み方 | 書き方の例 |
|---|---|---|
| NOT | 否定 | NOT A、¬A、!A、~A、A' |
| AND | 論理積 | A AND B、A ∧ B、A・B、A & B、A * B、AB |
| OR | 論理和 | A OR B、A ∨ B、A + B、A | B |
| XOR | 排他的論理和 | A XOR B、A ⊕ B、A ^ B |
| NAND | 否定論理積 | A NAND B、A ↑ B |
| NOR | 否定論理和 | A NOR B、A ↓ B |
NOT の上線(A の上に引く横線)はキーボードで入力しにくいため、代わりに後ろに ' を付けて A' と書きます。(A・B)' のように括弧の後ろに付けると、括弧の中全体の否定になります。AB や A(B + C) のように演算子を省略した書き方は AND とみなします。英単語の演算子は大文字・小文字のどちらでもかまいませんが、A AND B のように前後に空白を入れてください。
計算の順番(優先順位)は、NOT > AND・NAND > XOR > OR・NOR です。かけ算をたし算より先に計算するのと同じように、AND を OR より先に計算します。同じ順位の演算子が並んだときは、左から順に計算します。
| 入力した式 | ツールの解釈 |
|---|---|
A + B・C | A + (B・C) |
NOT A AND B | (NOT A) AND B |
A ⊕ B・C | A ⊕ (B・C) |
A + B ⊕ C | A + (B ⊕ C) |
A NAND B NAND C | (A NAND B) NAND C |
NOT・AND・OR の順番は一般的な決まりと同じですが、XOR・NAND・NOR の順位は本やプログラミング言語によって扱いが違うことがあります。このツールの XOR の順位は、Python や JavaScript のビット演算子(& が ^ より先、^ が | より先)と同じにしています。NAND と NOR は、A NAND B NAND C と A NAND (B NAND C) で結果が変わるので、続けて書くときは括弧を付けるのが安全です。
2 つの式が同じ結果になるか調べる
- 「論理式」の欄に 1 つ目の式を入力します(例:
(A・B)')。 - 「比べる式」の欄に 2 つ目の式を入力します(例:
A' + B')。 - すべての行で結果が同じなら「2 つの式は同値です」と表示されます。違う行があるときは、その行に色が付き、「一致」の列に「×」が表示されます。
式を簡単にしたあとで、元の式と同じ意味になっているかを確かめるときに便利です。「例」のボタンを押すと、ド・モルガンの法則・分配法則・吸収法則などの式が 2 つの欄に入り、同値になることを確認できます。「よくある間違い」のボタンでは、同値にならない例と、違う行の表示を確認できます。
表の上には、結果が 1 になる行の数と「主加法標準形」も表示します(主加法標準形は、1 になる行が 8 行以下のときだけ表示します)。主加法標準形とは、結果が 1 になる行の変数の組み合わせ(A=1、B=0 なら A・B')を OR でつないだ式で、どんな論理式でもこの形で書き表せます。すべての行で 1 になる式(恒真式、トートロジー)と、すべての行で 0 になる式(恒偽式)は、そのことも表示します。
論理演算とは?
論理演算とは、「真(1)」か「偽(0)」の 2 つの値だけを使う計算のことです。「雨が降っている」「傘を持っている」のような、正しいか正しくないかが決まる条件を組み合わせるときに使います。たとえば「雨が降っていて、かつ傘を持っていない」なら濡れる、という判断は AND と NOT の組み合わせです。
コンピューターの中では、電気が流れている状態を 1、流れていない状態を 0 として、AND・OR・NOT などの論理演算をする回路(論理回路)を組み合わせて計算をしています。プログラミングでも、if 文の条件を組み合わせたり、ビット単位で値を操作したりするときに論理演算を使います。
真理値表とは、論理式に入る値(0 と 1)のすべての組み合わせと、そのときの結果を一覧にした表です。変数が 2 つなら 4 通り、3 つなら 8 通りの組み合わせがあり、表を作れば式の意味を漏れなく確かめられます。2 つの式の真理値表がすべての行で同じなら、その 2 つの式は「同値」(同じ意味)です。
AND・OR・NOT・XOR の真理値表
基本となる演算の意味と真理値表は次のとおりです。
- AND(論理積):A と B が両方とも 1 のときだけ 1
- OR(論理和):A と B の少なくとも一方が 1 なら 1
- XOR(排他的論理和):A と B が違うとき(どちらか一方だけが 1 のとき)に 1
- NAND(否定論理積):AND の結果を反対にしたもの。両方とも 1 のときだけ 0
- NOR(否定論理和):OR の結果を反対にしたもの。両方とも 0 のときだけ 1
| A | B | A AND B | A OR B | A XOR B | A NAND B | A NOR B |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
NOT(否定)は、値を 1 つだけ取り、0 と 1 を反対にする演算です。
| A | NOT A |
|---|---|
| 0 | 1 |
| 1 | 0 |
NAND は、それだけを組み合わせれば AND・OR・NOT のすべてを作れることが知られています。たとえば同じ値どうしの NAND(A NAND A)は NOT A と同じになります。ツールの「NAND だけで NOT」のボタンで確かめられます。
Python では、0 と 1 に対して &(AND)・|(OR)・^(XOR)のビット演算子を使うと、同じ結果を確かめられます。Python の対話モードで次の式を入力すると、A・B・A AND B の組を並べた「[(0, 0, 0), (0, 1, 0), (1, 0, 0), (1, 1, 1)]」が表示されます。
[(a, b, a & b) for a in (0, 1) for b in (0, 1)]
ド・モルガンの法則
ド・モルガンの法則は、「AND 全体の否定」と「OR 全体の否定」を、それぞれの否定に分ける法則です。否定を中に入れると、AND と OR が入れ替わると覚えると便利です。
NOT (A AND B)=(NOT A) OR (NOT B)(記号では¬(A ∧ B) = ¬A ∨ ¬B、(A・B)' = A' + B')NOT (A OR B)=(NOT A) AND (NOT B)(記号では¬(A ∨ B) = ¬A ∧ ¬B、(A + B)' = A'・B')
真理値表で確かめると、左辺と右辺がすべての行で同じになります。
| A | B | NOT (A AND B) | (NOT A) OR (NOT B) | NOT (A OR B) | (NOT A) AND (NOT B) |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 0 | 0 |
| 1 | 0 | 1 | 1 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 | 0 |
よくある間違いは、(A・B)' を A'・B' としてしまうことです。否定を中に入れたら、AND を OR に変えるのを忘れないようにしましょう。ツールの「よくある間違い」のボタンを押すと、A=0・B=1 と A=1・B=0 の 2 行で結果が違うことがわかります。
プログラミングでは、if 文の条件を読みやすく書き直すときによく使います。たとえば「NOT (ログイン済み AND 管理者)」は「ログインしていない OR 管理者ではない」と同じ意味です。
そのほかの基本法則
| 法則 | 式 |
|---|---|
| 分配法則 | A・(B + C) = A・B + A・C、A + B・C = (A + B)・(A + C) |
| 吸収法則 | A + A・B = A、A・(A + B) = A |
| 二重否定 | (A')' = A |
| 補元の法則 | A + A' = 1、A・A' = 0 |
| XOR の展開 | A ⊕ B = A・B' + A'・B |
ふつうの数の計算では成り立たない A + B・C = (A + B)・(A + C) が成り立つのが、論理演算の特徴です。どの法則も、2 つの式をツールに入力すると同値であることを確認できます。
基本情報・応用情報の試験での出題例
IPA(情報処理推進機構)が公開している試験のシラバス(出題範囲を詳しく示した資料)では、基本情報技術者試験(Ver.9.2)・応用情報技術者試験(Ver.7.2)とも、「基礎理論」の「離散数学」に「論理演算」が含まれ、「論理式の表現,論理演算,ド・モルガンの法則などの基本法則,真理値表の手法を理解する」とされています。用語例には、否定・論理和・論理積・排他的論理和・否定論理和・否定論理積・分配則などが挙げられています。また「ハードウェア」の「電気・電子回路」には、AND 回路・OR 回路・NOT 回路などの論理回路が含まれています。
ここでは、これらの内容を確認できる自作の例題を紹介します(実際の過去問ではありません)。式は「・」を AND、「+」を OR、' を NOT として書いています。ツールで答えを確かめながら、手でも真理値表を書いてみてください。
例題 1:真理値表から演算を見分ける
問題:論理式 (A + B)・(A・B)' の真理値表を作り、どの演算と同じになるか答えなさい。
答え:XOR(A ⊕ B)。A・B が 00、01、10、11 のとき、結果は 0、1、1、0 になります。「少なくとも一方が 1」かつ「両方とも 1 ではない」なので、どちらか一方だけが 1 のときに 1 になります。
例題 2:ド・モルガンの法則で式を簡単にする
問題:(A' + B')' を簡単にしなさい。
答え:A・B。ド・モルガンの法則で (A' + B')' = (A')'・(B')' とし、二重否定で A・B になります。
例題 3:2 つの式が同値か判定する
問題:A + A'・B と A + B は同値か答えなさい。
答え:同値です。分配法則で A + A'・B = (A + A')・(A + B) とし、A + A' = 1 なので A + B になります。真理値表でも、4 行すべてで結果が同じになります。
例題 4:NAND だけで OR を作る
問題:(A NAND A) NAND (B NAND B) は、どの演算と同じになるか答えなさい。
答え:OR(A + B)。A NAND A は A'、B NAND B は B' なので、式は (A'・B')' になり、ド・モルガンの法則で A + B になります。
よくある質問
入力したデータは保存されませんか?
保存されません。計算はすべてお使いのブラウザの中で行われ、サーバーへの送信も保存も行いません。ページを閉じると入力内容は消えます。また、入力した式をプログラムとして実行する仕組み(JavaScript の eval など)は使わず、ツール自身が式を 1 文字ずつ読み取って計算しています。
F 以降の変数や、6 つ以上の変数は使えますか?
使えません。変数は A〜E の 5 つまでです。5 つで 32 行になり、それ以上は表が長くなりすぎて確認しにくいためです。X・Y・Z などを使った式は、A・B・C などに置き換えて入力してください。
「AB」はどう解釈されますか?
A と B の AND(A・B)と解釈します。A'B や (A + B)(A + C) のように演算子を省略した書き方も、すべて AND とみなします。解釈した結果は表の上に括弧付きで表示されるので、意図どおりか確認してください。
「^」は AND ではないのですか?
このツールでは、「^」は XOR(排他的論理和)として扱います。プログラミング言語の多くで「^」が XOR を表すためです。AND の記号「∧」と形が似ているので注意してください。AND を入力したいときは「∧」「&」「・」「AND」のどれかを使ってください。
表の行はどの順番で並んでいますか?
変数をアルファベット順に左から並べ、全体を 2 進数として見たときに 0 から順に増えていく順番です。変数が A・B・C の 3 つなら、000、001、010……111 の順に 8 行並びます。
関連する記事・ツール
- 基数変換ツール【無料・登録不要】2進数・8進数・10進数・16進数を相互変換|2の補数対応
- サブネット計算ツール【無料・登録不要】IPv4のネットワークアドレス・ホスト数をCIDRから計算
- 稼働率・MTBF・MTTR 計算ツール
- chmod計算ツール【無料・登録不要】パーミッションの数値⇔記号を変換|755・644の意味とコマンド生成
- 試験日までの学習計画ツール