情報システム演習 (2016) 第1回

Ichi Kanaya
1 min readApr 12, 2016

--

この記事は長崎県立大学シーボルト校情報システム学部情報システム学科で開講される1年生向けの「情報システム演習」の講義ノートの第1回めです.この記事は講義後も追記しますから,時々振り返って読みに来てください.

栢木先生の基本情報技術者教室 (情報処理技術者試験)

「情報システム演習」は独立行政法人情報処理推進機構(IPA)が実施する「基本情報技術者試験」の出題範囲と同じ内容を学ぶ科目で,同試験の合格を持って単位認定されます.つまり,「情報システム演習」の単位を取るためには「基本情報技術者試験」に合格しないといけません.

「情報システム演習」は情報システム学科の必修科目ですので,学生諸君は必ず合格してください.

教科書として「平成28年度 イメージ&クレバー方式でよくわかる栢木先生の基本情報技術者教室 (情報処理技術者試験)」を使います.講義は教科書に沿って行いますので,教科書は是非購入してください.古本で売れるような本ではありませんから,講義中にどんどん書き込んで自分だけの教科書にしましょう.

情報の基礎理論 1/2

教科書の第1章「情報の基礎理論」は2回に分けて講義をします.第1章のカバー範囲は

  1. 情報の表現
  2. 基数変換
  3. 補数表現と固定小数点表示
  4. 浮動小数点表示
  5. 誤差
  6. シフト演算
  7. オートマトン
  8. 論理演算と論理回路
  9. 半加算器と全加算器

ですが,順序を若干入れ替えて,第1回めの講義では

  • 情報の表現
  • 基数変換
  • 論理演算と論理回路

を中心に行います.

情報の表現

情報の基本単位であるビット(bit)について学びます.ビットとは,電灯がオンなのかオフなのか,オセロ(リバーシ)の石が黒なのか白なのか,返事が「はい」か「いいえ」なのか,といった二つしか選択肢がない状態を表現する単位です.

教科書では触れられていませんが,なぜ二つしか選択しがない状態だけを考えるのでしょうか?ガスコンロなら弱火,中火,強火にできますし,「はい」と「いいえ」の中間の「はいえ」だってあるかもしれません.

これは,我々が扱うコンピュータが「デジタルコンピュータ」であることと密接に関係しています.なぜデジタルなのか,その話は講義の中でします.(講義終了後にここに追記するかもしれません.)

基数変換

1ビットの情報が表現できるのは,我々の親しんだ数字で言えば0か1かだけです.別に2と3でもいいのですが,0か1の二択にしておいたほうが後々便利なので0と1にします.

1ビットの情報を,例えば4個束ねると4ビットの情報になります.そうすると数字にした時に 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111 と16個の組み合わせが作れます.これら16個のビットの束に,それぞれ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F と名前をつけましょう.先頭の10個はそのまま我々の大好きな10進数の数字として使えそうです.

実際,このようにして10進数を表現する方法は Binary Coded Decimal (BCD) と言って初期のコンピュータではよく使われていました.

ただ,我々がなぜ10進数が大好きかというと,結局のところ我々の手の指が合計10本だからというところに行き着きます.何もなし(0)から始めて,一つ,二つと指を折っていき(あるいは伸ばしていき),10になったら二人目が必要になるから,10進数を採用していたのですね.

もし我々の手の指がもし12本だったなら,我々は12進数を使っていたに違いありません.指が16本であれば,16進数を使ったでしょう.ならば,最初から16進数を採用してもおかしいということはありません.

もっといい方法もあります.それは2進数を使うことです.10進数では 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 と10個の記号を使いましたが,2進数では 0, 1 の2個の記号で足ります.2進数では,数値は 0, 1, 10, 11, 100, 101, 110, 111, … と増えていきます.これはビットを束ねた時の表現と同じです.

2進数,10進数,16進数はそれぞれ数値が0から数えて何番目かということを表現する異なる方法でした.ならば,普段はデジタルコンピュータにとって都合のいい2進数を使っておき,人に見せる時だけ10進数で表現すればいいわけです.これを基数変換といいます.

ただ10進数は2進数からの変換が若干面倒くさいので,プログラマはどちらかと言えば16進数の方を好みます.16進数なら2進数と暗算で行ったり来たりできますし,大体の分量を掴めるからです.

(講義第1回はここで終えました.以下の内容は第2回で行います.)

論理演算と論理回路

コンピュータは日本語では計算機と言いますが,かつては計算者の意味でした.いずれにせよ「計算するひと」のことです.(上方弁では機械も「ひと」と言います.)

具体的にはどんな計算をするのでしょう?

それには,コンピュータが何を出来るかよりも,我々がコンピュータに何をして欲しいかを考えることが良いでしょう.まずコンピュータにやって貰いたいことといえば,足し算でしょうか.

例えば10進数では

1+1=2

です.これは2進数では

 1+1=10

になります.あらゆる足し算の組み合わせをコンピュータに覚えさせておけば,確かにコンピュータによって足し算はできるようになります.しかしこれは現実には不可能です.そこで,最低限足し算に必要な計算を見つけておきましょう.2進数1桁の足し算は

0+0=0
0+1=1
1+0=1
1+1=10

ですから,数は知れています.あとは桁数に応じて組合せればなんとかなりそうです.我々が掛け算の九九を1桁分しか覚えていないのに,何桁の掛け算でもできるのと同じですね.

さて,前半の

0+0=0
0+1=1
1+0=1

の部分ですが,これはそのまま

A+B=X

とした時に,

AまたはB1ならばX1,それ以外ならばX0

とルール化できます.このルールを,AまたはB (A or B) からとってORルールと名づけましょう.

1+1=10

の部分は,右辺が2桁あるので厄介です.これを

A+B=YX

と書くことにしましょう.ORルールに従うと,AまたはB1ならばX1なので,ORルールはそのまま使えません.そこでORルールにもう一つ条件をつけましょう.

AまたはB1ならばX1,ただしAおよびB1ならば0,それ以外ならばX0

なんだかややこしくなりましたが,これもルールです.このルールは排他的(exclusive)なORルールなので,略してXORルールと名づけます.

まだyが終わっていません.足し算の右辺を念のため2桁で表現しておくと,

0+0=00
0+1=01
1+0=01
1+1=10

ですから,

AおよびB1ならばY1,それ以外ならばY0

です.このルールをAおよびB (A and B) から取ってANDルールと名づけます.

さて,XORルールを作った時にORルールに付け加えた条項がありましたね.これを仮に排他条項と呼びましょうか.XORルールから排他条項だけ抜き出すと,

AおよびB1ならば0

になります.これはANDルールとよく似ています.実際,最後の01に置き換えるとANDルールと同じになります.

そこで,マイナスとよく似た記号「¬」を発明します.この記号は否定(NOT)記号と言います.否定記号は

¬0=1
¬1=0

という風に使い,それぞれ「0の否定は1」「1の否定は0」と読みます.¬記号は英語でNOTと言うので,先ほどの式は次のようにも書きます.

NOT 0 = 1
NOT 1 = 0

排他条項は

AおよびB1ならば0の否定

と読みかえられます.もっと簡単にいえば「ANDルールの否定(NOT)」ですね.英語では NOT AND なので,略してNANDと書きます.

兎にも角にも,2進数の足し算は OR, AND, NOT の三つのルールに分解出来ました.XORルールは OR, AND, NOT または OR, NAND に分解できます.(これは講義で詳しくやります.)

これらのルールを忠実に電子回路で再現したものが,みなさんの目の前にあるコンピュータです.

--

--