
【6日でできるC言語入門】コンピュータの仕組み
コンピュータは、私たちの生活や仕事に欠かせない存在となっています。しかし、「コンピュータの仕組みはどうなっているのか?」と問われると、意外と知られていない部分も多いものです。
プログラミングを学ぶ上でも、コンピュータの基本的な仕組みや、それを支える用語や概念の理解がとても重要です。なぜなら、プログラミングを進めていくと必ず「コンピュータの動きのイメージ」が必要になる場面が訪れるからです。
本記事では、コンピュータの仕組みと、それを理解するために最低限知っておくべき基本用語・考え方について詳しく解説します。

1.コンピュータの基本構造と用語
1.1. デジタルとアナログ
コンピュータはデジタル回路によって動作しています。まずは「デジタル」と「アナログ」の違いを理解しましょう。
| 項目 | アナログ | デジタル |
|---|---|---|
| 表現方法 | 連続的な量(例: 温度、時間、角度) | 離散的な数値(0と1など、決められた値のみ) |
| 例 | アナログ時計、体温計、音声信号 | コンピュータ、デジタル時計、デジカメの画像 |
コンピュータは、0と1の2進数で全ての情報を扱う「デジタルな装置」なのです。
1.2. ビットとバイト
コンピュータ内部の最小情報単位はビット(bit)です。
「0」または「1」だけを表現します。
- 8ビット集まると「バイト(byte)」となります。
| 単位 | 説明 | 情報量 |
|---|---|---|
| 1ビット | 0または1 | 2通り |
| 1バイト | 8ビットで1セット | 256通り (2の8乗) |
| 1KB | 1,024バイト | 1,024B |
| 1MB | 1,024キロバイト | 1,048,576B |
| 1GB | 1,024メガバイト | 1,073,741,824B |
| 1TB | 1,024ギガバイト | 1,099,511,627,776B |
メモリやファイルの容量表記でよく使われる単位も、この仕組みに基づいています。
1.3. 2進数と16進数
コンピュータでは「2進数」が基本です。
私たちが普段使う「10進数」や、プログラミングでよく使う「16進数」との違いは以下の通りです。
| 10進数 | 2進数 | 16進数 |
|---|---|---|
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 2 | 0010 | 2 |
| 3 | 0011 | 3 |
| 4 | 0100 | 4 |
| 5 | 0101 | 5 |
| 6 | 0110 | 6 |
| 7 | 0111 | 7 |
| 8 | 1000 | 8 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 12 | 1100 | C |
| 13 | 1101 | D |
| 14 | 1110 | E |
| 15 | 1111 | F |
- 16進数は、プログラミングでバイトデータをわかりやすく表現する際などによく使われます(例: 0xFFは255)。
2.コンピュータの動作原理
2.1. 論理演算と論理回路
コンピュータは、「論理回路」という電子回路で計算や判断を行っています。
- AND(論理積): 両方が1なら1
- OR(論理和): どちらか1つでも1なら1
- NOT(否定): 0なら1、1なら0
| A | B | AND | OR |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 |
NOTの例
- A=1 → NOT A=0
- A=0 → NOT A=1
これらの組み合わせで、複雑な計算や情報処理ができるようになります。
2.2. 集積回路とコンピュータの進化
コンピュータの進化は「素子」と呼ばれる基本部品の変化に大きく左右されてきました。
| 世代 | 主な素子 | 特徴 |
|---|---|---|
| 第1世代 | 真空管 | 非常に大きく寿命が短い |
| 第2世代 | トランジスタ | 小型化・高性能化が進展 |
| 第3世代 | IC(集積回路) | 多数の素子をまとめて搭載 |
| 第4世代 | LSI(大規模集積) | さらに大量の素子を搭載 |
現代のコンピュータはLSIによる超高密度な集積回路で構成されており、CPUやメモリの小型化と高性能化が進んでいます。
まとめ
コンピュータは、デジタル回路と論理演算を基礎に、2進数やビット・バイトで情報を扱い、さまざまな計算や処理を行っています。
その進化は、真空管からLSIへと「素子」の小型化・高集積化によって支えられてきました。
これらの基礎を知っておくことで、プログラミングの学習や実践において「なぜこのような動作になるのか」を深く理解できるようになります。今後、より複雑な仕組みやプログラムの動作原理を学んでいくための土台として、ぜひ頭に入れておきましょう。
