[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

コンピュータIIL(情報科学入門)第2回

目次
2.1 ハードウェアとソフトウェア
2.1.1 ハードウェアとは
2.1.2 ソフトウェアとは
2.2 2進数(1)
2.2.1 ビット
2.2.2 2進数とは
2.2.3 10進2進変換
2.2.4 2進数の四則演算
2.3 演習2
2.4 レポート課題
2.5 参考文献
索引
CPU   アキュムレータ   アドレス   記憶装置   基数   位取り   主記憶   10進数   ソフトウェア   中央処理装置   2進数   2進符号   入出力装置   ハードウェア   バイト   ビット   プログラム   プログラム・カウンタ   プログラム内蔵方式   補助記憶   命令   メモリ   レジスタ  

2.1 ハードウェアとソフトウェア

はじめに、コンピュータの仕組みについて、概要を説明します。 コンピュータの構成要素は、まず、ハードウェアとソフトウェアに分けられます。

2.1.1 ハードウェアとは

ハードウェアhardware ) とは、コンピュータを構成する装置のことです。 ハードウェアには、中央処理装置、記憶装置、入出力装置などがあります。

中央処理装置central processing unit )は CPU とも呼ばれ、各種の制御や演算を行う装置です。 CPUはコンピュータの「頭脳」であると考えてください。

記憶装置memory unit )は、データを記憶する装置です。 記憶装置は、主記憶と補助記憶に分類されます。 主記憶main memory )は、容量が小さい代わりに高速に記憶できる装置です。 代表的な主記憶は、メモリです。 一方、 補助記憶auxiliary memory )は、速度が遅い代わりに大容量の記憶ができる装置です。 代表的な補助記憶は、ハード・ディスク、フロッピー・ディスクなどです。

入出力装置input/output unit )は、主に人間との間で入力や出力を行う装置です。 代表的な入出力装置は、キーボード、マウス、ディスプレー、プリンタなどです。

代表的な主記憶である メモリmemory )には、1バイト単位でデータが格納できます。 それぞれのバイトには、 アドレスaddress )と呼ばれる番号が割り当てられています。 CPUは、アドレスを指定して、メモリの中のデータを読み書きします。

CPUの内部には、制御を行う制御装置と演算を行う演算装置があります。 この他に、 レジスタregister )と呼ばれる、極小容量・超高速の記憶装置があります。 レジスタには、役割が決まっている専用レジスタと、自由に使える汎用レジスタがあります。 専用レジスタには、演算データが格納される アキュムレータaccumulator )や、命令アドレスを指定する プログラム・カウンタ program counter )などがあります。

2.1.2 ソフトウェアとは

さて、コンピュータが動くとはどういうことでしょうか。

コンピュータが動くことは、CPUが次々に命令を実行することです。 ここで、 命令instruction )とは、CPUの動作を意図するデータです。 例えば、レジスタの値をメモリに書き込め、メモリを読み取りレジスタに格納せよ、アキュムレータの値とレジスタの値を足してアキュムレータに格納せよ、などの命令があります。

命令の系列を プログラムprogram )と呼びます。 プログラム内蔵方式stored program )とは、プログラムをデータと同じように記憶装置に格納し、プログラムを実行するときは、プログラムを記憶装置から取り出し、その命令の系列を解釈して実行する方式を言います。 現在のコンピュータは、プログラム内蔵方式で動いています。

プログラムの集まりを ソフトウェアsoftware ) と呼びます。


2.2 2進数(1)

2.2.1 ビット

前回、情報科学は情報の構造や処理に関する学問であると言いました。 今日は、その第一歩として、コンピュータの内部では、データはどのように表現されるのかについて説明します。

コンピュータが扱うデータの単位はビットです。 ビットbit )とは、0と1のことです。 ビットを実現するには、必ずしも記号を書く必要はなく、電圧の有無といった2種類の区別できる量でも実現できます。

コンピュータの内部では、データはすべてビットの列によって表現されます。 このビットの列による表現は、 2進符号binary code )と呼ばれます。

なお、ビットはデータの単位としては小さすぎて扱いにくいですので、通常のシステムでは、バイトをデータの単位とします。 バイトbyte )とは、8ビットのまとまりのことです。

2.2.2 2進数とは

コンピュータの扱うデータの中では、数値、特に整数が重要です。 ここでは、整数の2進符号について説明します。

例えば、整数のつもりで 123 と書きますと、これは

1 × 100 + 2 × 10 + 3 × 1

という値を持ちます。 0から9までの10種類の数字を並べ、100の位の数字が100の重さを持ち、10の位の数字が10の重さを持ち、1の位の数字が1の重さを持つのです。 このように、数字の位置に応じて重さを変える、数値の表記法を、 位取りpositional notation )と呼びます。 そして、重さが10倍10倍であることを、この位取りの 基数radix )は10であると言います。 基数10の位取りによって表現された数が 10進数decimal number )です。

2進数binary number ) とは、基数2の位取りによって表現される数のことです。 2進数では、0か1の数字を並べ、右から1の位、2の位、4の位、8の位、…となります。 例えば、2進数 110 は、

1 × 4 + 1 × 2 + 0 × 1 = 6

という値を持ちます。

普通のシステムでは、整数の2進符号として2進数を用います。 つまり 、0と1による位取りをビットの列に対応させます。 桁数が足りなければ、左側に0を追加します。 10進数と2進数、2進符号の対応は次の通りです。

表 2.1  10進数、2進数、2進符号の対応
10進数 2進数 2進符号(1バイト)
0 0 00000000
1 1 00000001
2 10 00000010
3 11 00000011
4 100 00000100

2.2.3 10進2進変換

ここで、10進数と2進数を相互に変換する方法について説明します。

10進を2進数に変換するには、次のようにします。

  1. 与えられた10進数を2で割り、商と余りを求めます。
  2. 商が0になるまで、直前の商を2で割り続け、商と余りを求めます。
  3. 余りの列を、下が左、上が右になるように並べ替えます。

なぜこの方法で変換できるかについて、簡単に説明します。 例えば、2進数 xyz は、式

x × 4 + y × 2 + z × 1

で表されます。 この式は

((0 × 2 + x )× 2 + y )× 2 + z

と書き直せます。 したがって、これを2で割れば余りは z になり、また2で割れば余りが y になり、…というわけです。

例題1. 10進数 58 を2進数に変換してください。

解答例1.

58 ÷ 2 = 29 … 0
29 ÷ 2 = 14 … 1
14 ÷ 2 = 7 … 0
7 ÷ 2 = 3 … 1
3 ÷ 2 = 1 … 1
1 ÷ 2 = 0 … 1

したがって、10進数 58 は2進数で 111010 です。

2進数を10進数に変換するには、次のようにします。

  1. 0の2倍と与えられた2進数の左端の数の和を求めます。
  2. 2進数の右端になるまで、直前の和の2倍と2進数の一つ右の数の和を求めます。
  3. 最後の和が変換結果です。

2進数から10進数への変換は、10進数から2進数への変換のちょうど逆のことを行っています。

例題2. 2進数 101000 を10進数に変換してください。

解答例2.

0 × 2 + 1 = 1
1 × 2 + 0 = 2
2 × 2 + 1 = 5
5 × 2 + 0 = 10
10 × 2 + 0 = 20
20 × 2 + 0 = 40

したがって、2進数 101000 は10進数で 40 です。

2.2.4 2進数の四則演算

2進数の四則演算は、10進数の場合と同様に行います。 ただし、繰り上げと繰り下げには注意が必要です。 例えば足し算ならば、10進数の場合は10以上で繰り上げましたが、2進数の場合は2以上で繰り上げます。 具体的は、1と1を足したら、0を書いて1を繰り上げます。

例題3. 10進数の足し算 50 + 29 = 79 を2進数で行ってください。 始めに 50 と 29 を2進数に変換し、2進数の足し算を行った後、結果を10進数に変換します。

解答例3.

50 ÷ 2 = 25 … 0
25 ÷ 2 = 12 … 1
12 ÷ 2 = 6 … 0
6 ÷ 2 = 3 … 0
3 ÷ 2 = 1 … 1
1 ÷ 2 = 0 … 1

10進数 50 は2進数で 110010 です。

29 ÷ 2 = 14 … 1
14 ÷ 2 = 7 … 0
7 ÷ 2 = 3 … 1
3 ÷ 2 = 1 … 1
1 ÷ 2 = 0 … 1

10進数 29 は2進数で 11101 です。

    1 1 0 0 1 0
+     1 1 1 0 1
---------------
  1 0 0 1 1 1 1

和は2進数で 1001111 です。

0 × 2 + 1 = 1
1 × 2 + 0 = 2
2 × 2 + 0 = 4
4 × 2 + 1 = 9
9 × 2 + 1 = 19
19 × 2 + 1 = 39
39 × 2 + 1 = 79

2進数 1001111 は10進数で 79 です。


2.3 演習2

問1. 10進数 77 を2進数に変換してください。

問2. 2進数 1011011 を10進数に変換してください。

問3. 10進数の足し算 54 + 22 = 76 を2進数で行ってください。 始めに 54 と 22 を2進数に変換し、2進数の足し算を行った後、結果を10進数に変換します。


2.4 レポート課題

今日の演習2の答案をメールで提出してください。 メールの差出人は学内のアドレス(b04a001@twcu.ac.jpなど)とし、メールの宛先はkonishi@twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(10月7日)を明記してください。


2.5 参考文献


[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

2005年10月7日更新
小西 善二郎 <konishi@twcu.ac.jp>
Copyright (C) 2005 Zenjiro Konishi. All rights reserved.