未来エンジニア養成所Blog

月単価180万以上のプログラミング講師がプログラミングを皆に楽しんでもらうための情報をお届けします。

【コンピュータの仕組み】ブールによる論理演算

title



論理学について


今回は論理学について解説します。


ここまでの解説ではアラビア数字によって、数をカンタンに表せるようになった歴史を見てきました。


しかし、数学の知識だけではコンピュータは作れません


もちろんそれは電子部品や半導体等が必要という意味ではありません。



なぜ論理学が必要か


コンピュータを作るには論理学の知識が必要です。


なぜ論理学の知識が必要なのでしょうか。


それは、数字を使って人間の思考や論理を表現することができるからです。


ジョージ・ブールの論理演算を中心に、数字で人間の思考を表す方法を解説します。



論理学とは


では、そもそも論理学とは何でしょうか。


論理学とは「正しい推論とは何か?」について考える学問です。

そして推論とは「すでに知っていることから、知らないことを導く」ことを指します。


簡単にいえば、人間の思考の筋道を研究することで、正しい結論(真理)を導くための学問なのです。



論理学の起源


論理学は紀元前四世紀、古代ギリシャでアリストテレスが始めた学問です。

当時の論理学は現代とは違い、大きな意味を持っていました。

言語を分析して、真理を探究する手段であり、哲学の一形態として考えられていました。

現代のように、学問の1分野というより、昔は哲学的な側面が強かったのです。



三段論法


アリストテレスの論理の基礎は三段論法でした。


最も有名な三段論法は上記のようなものです。

  • すべての人間は死ぬ
  • ソクラテスは人間である
  • ソクラテスは死すべき定めにある

三段論法では2つの前提が正しいと仮定し、これらの仮定から結論を導きます。


数学者達はこれらの論理を数学の記号や演算子を使って表そうとしていました。



ジョージ・ブール


そこで現れたのが19世紀イギリスの数学者ジョージ・ブールでした。


ブールは次のように考えます。

  • 合理的な人間は論理を使って思考をしている
    ならば、論理を数学で表すことは可能ではないか

と考えます。


彼は論理演算を発明し、人間の思考を数学で表すことに成功します。

これがそのままコンピュータに引き継がれるのです。


ここからは論理演算の計算方法を学んでいきましょう。



論理演算が苦手


具体的な内容に入る前に、皆さんに一つ質問です。

論理演算が苦手な人はいませんか?


実は私もその一人でした。


命題とか真とか偽とか「1」と「1」を足して「1」になったり、良く分からないですよね。

私も論理演算の仕組みを良く分かっていなかったので、とても気持ちが分かります。



足し算、掛け算のことは忘れる


論理演算を考えるときにポイントがあります。


私たちの知っている足し算や掛け算だと思わないことです。


今までの知識はすべて忘れてください。

論理演算も「+」や「×」の記号を使っていますが、計算内容や結果は全く違います。



なぜこれまでの計算とは違うのか


ではなぜこれまでの計算とは違うのでしょうか。


それは数学の世界に論理学を持ち込んでいるからです。


論理演算とは簡単に言えば、数学と論理学をミックするさせた計算方法です。

2つの学問が合わさっているからこそ、これまでの数学オンリーの計算とは異なります。

そこで今回は従来の四則演算と比べながら論理演算の計算を学んでいきます。



四則演算とは


まずは四則演算からです。


そもそも四則演算とは何でしょうか。


四則演算とは「足し算」「引き算」「掛け算」「割り算」の4つを合わせた計算方法です。

「四則」という言葉は4つのルールを意味します。

そして「演算」という言葉は「データに何らかの処理をして、結果の値を得ること」です。

データの処理方法は4つのルールによって異なっています。



四則演算の例


四則演算の具体例として、「12」と「34」を足す場合を考えてみます。

12 + 34 = 46

という、ただの足し算です。


この式を論理演算と比べる上で、注目して欲しいポイントが2つあります。



2つのポイント


1つ目が「数を扱った式である」こと。

2つ目が「=で結ばれた左と右の値は同じである」ということ。


当たり前ですが、この式では「12」「34」「46」という数値を扱って計算をしています。

そして、真ん中の「=」は左と右の値が同じであることを表しています。

左側の「12」と「34」を足した値は「46」であり、右側の「46」という値は左側と同じになっています。



どうしてここではこんな当たり前のことを説明しているかというと、論理演算はこれらと全く違うからです。


数値を扱うこともありませんし、左と右の計算結果が同じになることもありません。

そしてそれが論理演算を分かりづらくする一番の原因になっています。



論理演算の例


実際に論理演算を使った計算を見てみましょう。


ここでは、「真」足す「偽」は「偽」という何やらわけが分からない式となっています。


ジョージ・ブールがすごかったのが、「数」「数字」という具体的な値から離れて、数学をさらに抽象化させたことです。

だからこそ、「真」や「偽」といった抽象的な言葉を扱えるようになっています。



命題


論理演算ではこれらの数値は数ではなく命題を指しています。


命題とは「真」か「偽」を判定できる文章のことです。

ある命題が正しいか、間違っているかを通じて計算をおこないます。

そして計算の種類には「AND演算」 「OR演算」 「NOT演算」の3種類があります。



命題で計算


概要を解説した所で、もう少し掘り下げていきます。

まずは命題の具体例から考えていきましょう。


今までの計算では数値を扱っていました。

論理演算では命題が「真」か「偽」か、つまり、「正しい」か「間違っている」かで計算をおこないます。


上記の「A」と「B」は命題の具体例です。

  • 「A」は「犬は動物である」
  • 「B」は「ニューヨークは日本にある」

となっています。


「A」と「B」はどちらも「真」か「偽」を判定できる文章となっています。


「犬」は「動物」ですから、「A」の場合は「真」。

「ニューヨーク」は「日本」にありませんから、「B」の場合は「偽」となります。


そして、「A」と「B」の命題の真偽の結果を計算として扱っていきます



演算方法によって結果は異なる


では次に演算方法を見ていきます。


論理演算には「AND演算」「OR演算」「NOT演算」の3種類があります。

演算方法が異なればデータを加工する方法も異なるので、同じ真偽でも計算結果は全く異なります。


「AND演算」の場合は、命題が2つとも「真」のときだけ、結果も「真」となります。

どちらか片方が「偽」だと、結果も「偽」となってしまいます。


「OR演算」の場合は、命題のどちらか一方が「真」なら、結果も「真」となります。

両方とも「偽」の場合だけ「偽」となります。


「NOT演算」の場合は、1つの命題を対象とし、「真」と「偽」の結果を逆にします。

命題が「真」なら「偽」になり、「偽」なら「真」となります。


そして、ここで注意して欲しいのが、「AND」「OR」「NOT」の計算を行うときには、上記の括弧内に記載した「×」や「+」といった記号を用いると言うことです。

同じ「×」や「+」の記号を使っていても、それは「AND演算」や「OR演算」を表しているので気をつけましょう。


これらが論理演算の3つの計算方法です。

ここで説明しただけではイメージが湧かないと思うので、具体的に計算をおこなってみます。



AND、ORで計算


先ほど紹介した「A」と「B」の命題を使って計算をします。


「犬」は「動物」ですから、「A」の結果は「真」

「ニューヨーク」は「日本」にありませんから、「B」の結果は「偽」でした。


これを「AND」「OR」「NOT」で計算するとどのような結果が得られるのでしょうか。



計算


それぞれ計算を行うと、結果は上記のようになります。

それぞれの式の意味を見ていきましょう。


命題Aの結果の「真」という結果は左側に格納されており、命題Bの結果の「偽」という結果は右側に格納されています。

そして、それぞれを計算に掛けたときの計算結果が「=」の右側に書かれています。


「AND演算」の場合は、命題が両方とも「真」でないと、答えが「真」にならないので、今回は命題Bの結果に「偽」が入っていますから、結果が「偽」となっています。


「OR演算」の場合は、どちらか一方が「真」となっていれば良いので、今回は命題Aの結果に「真」が入っていますから、結果も「真」となっています。


このように、同じ「真」「偽」を使っているとしても、演算方法によって計算結果というのは全く異なる点に注意しておきましょう。



真理値表


先ほどは、命題Aは「真」、命題Bは「偽」というケースで論理演算を行いました。


他の真偽の組み合わせでは結果はどうなるのでしょうか。


そこで次に「AND演算」「OR演算」「NOT演算」の3種類を表にまとめます。

命題の内容は何でも構いませんが、ここでは結果に注目したいので、「真」か「偽」かだけを書くことにします。



AND演算の計算


「AND演算」を表にまとめると上記のようになります。

「真」と「偽」という言葉がたくさん出てきていますが、順番に見ていきましょう。


まず左側には「命題X」と「命題Y」のそれぞれの結果が格納されています。

組み合わせとしては「真と真」「真と偽」「偽と真」「偽と偽」ということで、全部で4通りの組み合わせが考えられます。

そして、その計算結果が右側に格納されています。


「AND演算」をもう一度確認すると、両方が「真」の時だけ結果が「真」となり、それ以外は「偽」となるのでした。


表を確認すると、「命題X」と「命題Y」が両方「真」の時だけ、結果が「真」となっています。

それ以外の場合はすべて計算に「偽」が入っていますので、結果もすべて「偽」となっています。


そして括弧内の「真×真」という式は数式を使って表した内容になっています。

この「×」というのは、私たちが普段目にするような「掛け算」の「×」ではなくて、「AND演算」の「×」を意味する点に注意しましょう。



OR演算の計算


次に「OR演算」を表にまとめます。


「OR演算」は2つの命題のうち、どちらか一方が「真」なら、結果も「真」でした。

ですので、上記の表をみると、「真」が入っている上から3つの計算は、結果もすべて「真」となっていますが、命題が2つとも「偽」の場合だけ、結果も「偽」となっています。


先ほどと同じように、括弧内の「+」というのは「OR演算」の演算子である「+」を意味しています。

私たちが普段目にする「足し算」とは異なるので注意しましょう。


「AND演算」と比べて、同じように「真」と「偽」の組み合わせが4通りでの計算をおこなっていますが、計算結果は全く異なりますので、この点にも注意しておきましょう。



NOT演算の計算


最後に「NOT演算」です。


「NOT演算」は命題の真偽を反対にする役割を持っていました。

ですので、「命題X」に対して、「真」のものを「NOT演算」に掛けると結果は「偽」へ、「偽」のものを「NOT演算」に掛けると結果は「真」となります。


「NOT演算」は1つの命題を対象とし計算を行っていることに着目してください。



論理演算まとめ


ここまで「AND」「OR」「NOT」の演算の3つの計算方法を見てきました。

「AND演算」は両方とも「真」なら「真」、「OR演算」はどちらかが「真」なら「真」となっています。

しつこいようですが、同じ組み合わせを使っているのにも関わらず、演算方法が異なれば結果も全く異なる点に注意しておきましょう。



数学っぽくしてみる


この論理演算をもう少し数学っぽくしてみましょう。


上記は先ほど確認した「AND演算」の表です。

この真偽値表だと、「真」や「偽」という言葉を使っていて、なんだかとても論理学っぽいです。


では、「真」の場合を「1」、「偽」の場合を「0」と置き換えてみましょう。

この真偽値表を「1」と「0」を使って書き直すと、次のようになります。



真を1、偽を0へ


ポイントは、これは私たちが知っている掛け算だと思わないことです。


この「1」と「0」の裏では「真」と「偽」の計算を行っていることに注意してください。


もう一度確認しておくと、「真」の場合は「1」、「偽」の場合は「0」ですので、「1」は論理演算の「真」を表しており、「0」は論理演算の「偽」を表しています。

「AND演算」は両方と「真」でないと結果も「真」になりません。

つまり、両方とも「1」の時だけ結果は「1」となり、命題の中に1つでも「0」が入っている場合は結果も「0」となっています。


そして、この「×」というのは論理演算子を数式で表した内容となっていますので、これも「1×1=1」、つまり、両方とも「真」の時だけ結果も「真」となる事を表しています。



真を1、偽を0へ


同じように「OR演算」の計算も「真」を「1」、「偽」を「0」に置き換えます。


「OR演算」は、どちらかが「真」なら結果も「真」となりました。

つまり、「OR演算」の表を見てみると、どちらか一方でも「1」、つまり「真」が入っている場合は結果も「1」となっており、両方とも「0」、つまり両方とも「偽」の時だけ結果も「0」、つまり「偽」となっています。


計算内容を見てみると、「1+1=1」と少し不思議なことになっていますが、論理演算の計算である点にしっかりと注意しておきましょう。



思考や言葉を置き換える


この図によって、論理を数学に置き換えることができました。

人間の思考や言葉をどんどん置き換えることで、数字へと変化させました。

人間の思考を数字で表そうという取り組みは、最終的には「1」と「0」だけの表になりました。

初めの時は、命題の「真」や「偽」という言葉を用いた計算だった事を思い出してください。



思考を数学で表す


ブールは元々、コンピュータのためにこれらの論理演算を考えた訳ではありません。

人間の思考を数学で表そうという考えから、論理演算は生まれました。

「0」と「1」を使った論理演算はコンピュータの発明に大きく関わります。

思考や論理を数学で表すブールのアイデアは、工学の技術によって形になるのです。



まとめ1


最後に、ここまでの内容をまとめましょう。

  • ジョージ・ブールは人間の思考や論理を数字を使って表すことを考えます。
  • 論理演算では数字ではなく、命題と呼ばれる真偽を判定できる文章で計算を行います。
  • 演算にはAND、OR、NOTの3種類があります。
     ANDは2つの命題がどちらとも「真」の時だけ結果も「真」。それ以外はすべて「偽」となります。
     ORは2つの命題のどちらか片方が「真」なら結果は「真」。両方とも「偽」の時だけ結果も「偽」となります。
     NOTは真偽の結果を逆にさせます。



まとめ2


2つの命題の真偽をAND、ORで計算すると、上記のような表が出来上がります。

AND演算は両方とも「真」のときだけ結果も「真」。

OR演算は片方に「真」が入っていれば結果は「真」となっています。



まとめ3


そして、「真」の場合を数字の「1」、「偽」の場合を数字の「0」に対応させると上記のような表となります。

これによって、論理を数学で表すことが可能になったのです。


参考図書



LINE公式アカウント

仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】


LineOfficial

友だち追加