2007.05.05
  • twitter
  • facebook
  • はてなブックマーク
  • 印刷

ブール代数って何だろう?

株式会社オーグメント 代表取締役 渡辺 俊雄

オリビアさん、コメントありがとうございます。でも正直、本音で言えば「コンピュータが2進数を使う」とはあまり書きたくないんですよ(苦笑)。なぜなら、コンピュータは数値を扱うためのものではないからです。2進数と書くと、どうしても数字を思い浮かべてしまって、“計算”をするためのものだという先入観を生みやすくなってしまうので……。/(^^;

コンピュータは、情報を処理するための装置です。コンピュータが持つ2種類の値“0”と“1”は、本当は数値としてではなく、“真(TRUE)”と“偽(FALSE)”を表すためのものなのです。人間が状況に応じて、2つしかない値に名前を付けて使い分けていると考えてください。たとえば、次のような感じですね(2進数というのが、ひとつの呼び方に過ぎないということが伝わるといいのですが……)。

 真(TRUE)と偽(FALSE)
 はい(YES)といいえ(NO)
 電圧が高い(H)と電圧が低い(L)
 1と0

さて、ブール代数の詳細について書き出すと延々と長くなってしまうので詳細は別な文献に譲ります。ここでは、コンピュータに関連する部分だけを簡単にご紹介します。

ブール代数がコンピュータにとって良かったのは、値が2つしか無い世界を扱うこと、そして基本となる論理演算をand、or、notという3種類で行うことができることにあります。皆さんは、なぜスイッチのオン・オフで計算が出来るのか、不思議に思ったことはありませんか? 実は、このandとorとnotという単純な仕組みを使うことで足し算ができてしまうのです。まずは、そのための基本。(当初考えていたのと順番は違いますが)and、or、notについてご説明していきましょう。

ブール代数における“and”は、2つの入力の両方が“真”である場合にのみ“真”となる演算です。集合で、クラスの「男子」で「メガネをかけている」の両方の条件を満たすようなことを調べたい場合を考えてみると良いでしょう。本当は表で書きたいのですが、ここでは表が使えないということで“表のように”書いてみます。^^; “F”を“0”、“T”を“1”として表現を置き換えることもできますので並記しておきますね。

 値a 値b 結果   値a 値b 結果
  F  F  F    0  0  0
  F  T  F    0  1  0
  T  F  F    1  0  0
  T  T  T    1  1  1

次に“or”ですが、これは2つの入力のどちらか一方が“真”である場合に“真”となる演算です。先ほどの例えで言えば、クラスの「男子」か「メガネをかけている」かのどちらかの条件を満たすようなことを調べたい場合を想像してください。or演算の結果は次のようになります。

 値a 値b 結果   値a 値b 結果
  F  F  F    0  0  0
  F  T  T    0  1  1
  T  F  T    1  0  1
  T  T  T    1  1  1

最後に“not”です。これは、and演算とor演算が2つの値に対して行われる二項演算であるのに対し、1つの値に対して行われる単項演算です。表を見るとお分かりいただけると思うのですが、入力を単純に反転する論理演算です。

 値 結果   値 結果
 F  T   0  1
 T  F   1  0

さて、次回はこの(いかにも単純な)論理演算を使って一桁の足し算をしてみることにしましょう。なかなか面白いですよ。

渡辺 俊雄(わたなべ としお)

株式会社オーグメント 代表取締役
1958年、東京生まれ。メーカー系システムエンジニア、大手コンピュータ出版社の書籍編集者、インターネット関連組織の広報などを経て2006年に独立。大学生と高校生の二人の子どもを持つ。

ご意見・ご要望、お待ちしています!

この記事に対する皆様のご意見、ご要望をお寄せください。今後の記事制作の参考にさせていただきます。(なお個別・個人的なご質問・ご相談等に関してはお受けいたしかねます。)

pagetop