２０１７年度 春学期・（ 火II ）情 報
第３回目 「コンピュータの仕組み」（続き）
4. コンピュータの動作原理（その１）
5. コンピュータの歴史「数と文字の表現」
6. １ビット・１バイト
東京学芸大学 自然科学系
宇宙地球科学分野 講師● 最初に西浦 慎悟

講義資料は、http://astro.u-gakugei.ac.jp/~nishiura 「西浦クンの講義室」に縮小版（PDFファイル）を置く予定

４. コンピュータの動作原理（その１）

第３回目（ Question ）『どのようにして、電気器械であるコンピュータに、・ 人間からの指示・ 様々な情報・ 多様な文字や数字を伝えるのか？』

スイッチの「ON」と「OFF」によって電気信号を作り出す。

「１」

「０」

『器械であるコンピュータは、多様な文字や数字といった様々な情報を、どのように理解するのか？』 「高い（H）」 「低い（L）」（ Answer ）コンピュータ = 電気器械

電気信号が、ある電位よりも高い（H = High）か？低い（L =Low）か？は理解できる。

『電気信号で情報を理解する』

1４. コンピュータの動作原理（その１）

第３回目● 論理回路  コンピュータを動かすディジタル回路
電気器械  スイッチの「ON」と「OFF」によって電気信号を作り出す。
無いか有るか「１」 「０」「真（True）」 「偽（False）」
入力信号「０」「真理値（truth value）」「真偽値」「論理値」（logical value）

入力信号「１」
出力信号「１」

出力信号「０」

入力

出力

真（ １ ）真（ １ ）

偽（ ０ ）

偽（ ０ ）

 上記の論理回路の「真理値表」（Truth table）

様々なスイッチのON / OFF の組み合わせによって、様々な出力を可能にする。  ディジタル回路

４. コンピュータの動作原理（その１）

第３回目● 基本論理回路 これらを組み合わせることで、様々な回路が組み立てることができる。
① ＮＯＴ回路 入力信号と反対の出力を行う回路。否定回路、反転回路やインバータとも呼ばれる。
入力信号「０」

入力信号「１」
出力信号「１」

入力

出力真（ １ ）偽（ ０ ）

偽（ ０ ）真（ １ ）

出力信号「０」・ ＮＯＴ回路の回路記号

 ＮＯＴ回路の「真理値表」

入力

出力
この「小さい丸の記号」がＮＯＴを示す。

2４. コンピュータの動作原理（その１）

第３回目② ＡＮＤ回路 論理積回路とも呼ばれる。入力信号Ａと入力信号Ｂがともに「真（１）」の時、「真（１）」を出力し、それ以外の場合は「偽（０）」を出力する回路。
入力信号Ａ「１」入力信号Ｂ「０」入力信号Ａ「１」 入力信号Ｂ「１」出力信号「０」

入力Ａ

入力Ｂ

出力信号「１」・ ＡＮＤ回路の回路記号

出力

真（ １ ） 真（ １ ） 真（ １ ）入力Ａ

真（ １ ） 偽（ ０ ） 偽（ ０ ）入力Ｂ

偽（ ０ ） 真（ １ ） 偽（ ０ ）偽（ ０ ） 偽（ ０ ） 偽（ ０ ）出力 ＡＮＤ回路の「真理値表」

４. コンピュータの動作原理（その１）

第３回目③ ＯＲ回路 論理和回路とも呼ばれる。入力信号Ａと入力信号Ｂのいずれかが「真（１）」の時、「真（１）」を出力し、それ以外の場合は「偽（０）」を出力する回路。
入力信号Ａ「０」入力信号Ａ「１」入力信号Ｂ「０」出力信号「１」

入力Ａ

入力Ｂ

入力信号Ｂ「１」・ ＯＲ回路の回路記号

出力

真（ １ ） 真（ １ ） 真（ １ ）入力Ａ

真（ １ ） 偽（ ０ ） 真（ １ ）入力Ｂ

偽（ ０ ） 真（ １ ） 真（ １ ）偽（ ０ ） 偽（ ０ ） 偽（ ０ ）

出力信号「１」

出力 ＯＲ回路の「真理値表」

3４. コンピュータの動作原理（その１）

第３回目

・ ＮＡＮＤ回路 ナンド回路と呼ぶ。「Not AND」の意味。ＡＮＤ回路とＮＯＴ回路を組み合わせたもの。入力信号Ａと入力信号Ｂがともに「真（１）」の時のみ、「偽（０）」を出力する。
入力Ａ

入力Ｂ

出力

真（ １ ）真（ １ ）

偽（ ０ ）真（ １ ）

偽（ ０ ）真（ １ ）

偽（ ０ ）真（ １ ）真（ １ ）

偽（ ０ ）

偽（ ０ ）

・ ＮＡＮＤ回路の回路記号
入力Ａ

 ＮＡＮＤ回路
真（ １ ） の「真理値表」

出力

入力Ｂ

・ ＮＯＲ回路 ノア回路と呼ぶ。「Not ＯＲ」の意味。ＯＲ回路とＮＯＴ回路を組み合わせたもの。
入力信号Ａと入力信号Ｂがともに「真（１）」の時のみ、「偽（０）」を出力する。
入力Ａ

入力Ｂ

出力

真（ １ ）真（ １ ）

偽（ ０ ）真（ １ ）

偽（ ０ ）

偽（ ０ ）

偽（ ０ ）真（ １ ）

偽（ ０ ）

偽（ ０ ）

偽（ ０ ）・ ＮＯＲ回路の回路記号
入力Ａ ＮＯＲ回路の真（ １ ） 「真理値表」

出力

入力Ｂ

４. コンピュータの動作原理（その１）

第３回目・ ＸＯＲ回路 ＥＯＲ回路、ＥＸＯＲ回路、排他的論理和回路とも呼ぶ。Exclusive ORの意味。
入力信号Ａと入力信号Ｂのどちらか一方のみが「真（１）」の時のみ、「真（１）」を出力する。
入力Ａ

入力Ｂ

出力

真（ １ ）真（ １ ）

偽（ ０ ）真（ １ ）

偽（ ０ ）真（ １ ）

偽（ ０ ）真（ １ ）真（ １ ）

偽（ ０ ）

偽（ ０ ）・ ＸＯＲ回路の回路記号
入力Ａ

 ＸＯＲ回路の偽（ ０ ） 「真理値表」

本日の演習（その１）
入力Ａ

この回路の真理値表を作成せよ。

入力Ｂ
出力W
入力C

出力

入力Ｂ

入力A

入力B

入力C

１１１１１０１０１１０００１１０１０００１０００出力W

4

第３回目

５. コンピュータの歴史
本来、「コンピュータとは何か」を定義する必要があるのだが・・・● 古代のコンピュータ（？）
アバカス（ ＝ abacus、広い意味での「そろばん」）
元来は、板の上に溝を彫り、そこで小石や豆などを動かすことで計算を行った道具。

・ 紀元前６世紀、古代ペルシャ・アケメネス朝で使われ始める。
・ 紀元前５世紀、古代ギリシャでテーブル型のものが使われ、古代ローマなどにも伝わったとされる。また、古代ギリシャのヘロドトスが、古代エジプトのアバカスについて記している。
・ 紀元前2700～2500年頃、古代メソポタミア・シュメールでアバカスが使われていた。
・ 紀元前300年頃、1846年、ギリシャのサラミス島で、古代ギリシャ時代のものと思われるアバカスが発見されている。最古の計算盤と見なされている。
・ 紀元前１世紀、ホラティウスが古代ローマのアバカスについて記録している。
（アバカスについては以下略）↑右の人物が使っているのがテーブル型のアバカス。
（Wikipediaより）

紀元１世紀の古代ローマのアバカスを復元したもの。

５. コンピュータの歴史

・ 紀元前２世紀、アンティキティラ島の機械。古代ギリシャ人によって作成されたと思われる世界最古の歯車式計算機。1901年に沈没船から回収され、その後、洗浄、分析、復元などが試みられている。
天体の運行を予測する計算機であるらしく、太陽と黄道１２星座を示す目盛りや、太陽・月の位置や月相、惑星の運行を示す針、日食などの表示などが備わっている。
ガンマ線やＸ線写真による詳細な内部構造の分析が行われ、復元品の作成も行われている。

第３回目↑アンティキティラ島の機械（Wikipediaより）

 アンティキティラ島の機械の復元品（アテネ国立考古学博物館所蔵：Wikipediaより）

・ １６２０年 エドマンド・ガンター（英）が、「対数尺」を発明する。これを元に、後に「計算尺」（対数の原理を利用して、乗除算、三角関数、対数、平方根などを計算できる）が作られる。現在では、関数電卓の普及で、多くのメーカーが製造中止。

↑ヘンミ計算尺P45S（Wikipediaより）

5

５. コンピュータの歴史

第３回目

・ １６２３年、ヴィルヘルム・シッカート（独）が、歯車式の自動計算機を作成する。加減算と乗算を行うことを目指したが、乗算については繰り上がり計算ができなかった。ヨハネス・ケプラーへの手紙の中で、天体計算への使用を言及している。
・ １６４２年 ブレーズ・パスカル（仏）が歯車式計算機パスカリーヌを作成。
←パスカル（Wikipediaより）↑シッカート（Wikipediaより）↑パスカリーヌ（Wikipediaより）

・ １６４２年 ゴッドフリート・ヴィル
ヘルム・ライプニッツ（仏）が歯車の回転によってステップ回転するドラムを用い、機械式計算機を作成した。この後、２進数の数理を確立する。

↑シッカートの計算機［復元品］（Wikipediaより）↑ライプニッツ（Wikipediaより）↑ライプニッツの段付歯車（Wikipediaより）

５. コンピュータの歴史

第３回目

・ １８２３年、チャールズ・バベッジ（英）が、多項式の計算から対数表や三角関数表を作成する階差機関（difference engine）、1834年からは蒸気機関で動く汎用計算機である解析機関（analytical engine）の開発を目指したが、実現しなかった。プログラム可能な計算機だった。
・ １９３６年 数学者アラン・チューリング（英）が計算を行う機械として、無数に区画化された一本のテープと、テープに対してデータの読み込み・書き込みを行うための一個のヘッド、という構成を考案する（チューリング・マシン）。
この機械は幾つかの“状態”を持ち、テープから読み出したデータとこの”状態”の組み合わせによって、１） ヘッドをテープ上で１区画動かす、２） ヘッドのあるテープの区画にデータを書き込む、 ３）”状態”を変更する、のいずれかの処理を行う。
チューリング・マシンは、原理上、一定の手順を設定することで、あらゆる計算を実行できる。

↑バベッジ（Wikipediaより）同じ年にエミール・ポストも同様の計算機械を考案している。
“状態”

 チューリング・マシンの概念図

ヘッド

区画化されたテープ↑チューリング（Wikipediaより）

6

５. コンピュータの歴史

第３回目・ １９３７年、クロード・シャノン（米）が、マサチューセッツ工科大学での修士論文において、スイッチング（リレー）回路によって論理演算が可能なことを示した。「今世紀で最も重要で、最も有名な修士論文」（ハワード・ガードナー＠ハーバード大学）●スイッチング（リレー）回路  電磁石によってスイッチのON/OFFを切り替える回路。
制御される回路
制御スイッチ電磁
石・ １９４１年、コンラート・ツーゼ（独）が、世界初の、自由にプログラムが可能な完全自動計算機Zuse Z３（もしくは単にZ3）を開発する。約2200個のリレー回路からなり、動作周波数は５-１０Hz。ドイツ航空機研究所で航空力学に関する計算に使用された。

↑ツーゼ（Wikipediaより）↑Zuse Z３
（Wikipediaより）

５. コンピュータの歴史

第３回目

・ １９４５年 ジョン・フォン・ノイマン（John von Neumann）が、ジョン・モークリー（John William Mauchly）、ジョン・エッカート（JohnPresper Eckert）とともにデジタル式電子計算機EDVAC（＝Electronoc Discrete Variable Automatic Computer ）を開発した際に、それに関連した論文内でプログラム内蔵型コンピュータについて言及した。
注） ノイマンが理論面、モークリーとエッカートが技術・開発面を受け持っていた。そのため、三者の連名であってもよいはずの論文であり、成果をノイマンのみに帰することについては疑問を持つ者も少なくない。
 フォン・ノイマン型コンピュータ、ノイマン型アーキテクチャー↑フォン・ノイマン（Wikipediaより）コンピュータの五大要素である、演算装置、記憶装置、制御装置、入力装置、出力装置、から構成される。
当時のコンピュータは、メモリにはデータが置かれ、プログラムは外部から入力していた。
 内蔵型プログラム（＝ストアドプログラム）方式
 現在のほとんどのコンピュータは、ノイマン型である。

7

５. コンピュータの歴史

第３回目

・ １９４６年 ペンシルバニア大学のジョン・モークリー（JohnWilliam Mauchly）とジョン・エッカート（John Presper Eckert）がデジタル式電子計算機ENIAC（= Electronic NumericalIntegrator and Computer）を開発。
アメリカ陸軍で主に弾道計算に用いられた。毎秒約5000回の加減算、毎秒385回の乗算、毎秒40回の除算、毎秒3回の平方根計算が可能だった。
ENIACは幅約30m、奥行き約1m、高さ約2.4m、総重量27トンで、17,000本以上の真空管や7000個以上のダイオードなどが使用されていたが、稼動当初には、毎日数本の真空管が破損し、その修理に毎回３０分ほどかかった。

↑エッカート（Wikipediaより）

・ １９４８年 マンチェスター大学のフレデリック・C・ウィリアムスとトム・キルバーンが、初のプログラム内蔵型コンピュータManchester SmallScale Experimental Machine（＝ SSEM：通称、The Baby）↑The Baby（wikipediaより）を開発。

↑ENIAC（wikipediaより）

５. コンピュータの歴史

第３回目

・ １９４７年 AT&Tベル研究所のジョン・バーディーン（John Bardeen）とウォルター・ブラッタン（Walter Houser Brattain）が点接触型トランジスタを発明。
・ １９４９年 AT&Tベル研究所のウィリアム・ショックレー（William Bradford Shockley Jr.）が接合型トランジスタを発明。
・ １９５２年 ショックレー（Shockley）が電界効果型トランジスタを発明。

●トランジスタ  増幅作用・スイッチ作用に使用される半導体素子。
NPN接合－ － N型半導体－ － （電子が過剰）
－ － －
P型半導体
＋＋＋ ＋ （正孔が過剰）－ －－ －－ － －電 ＋ ＋＋ ＋流×－ － N型半導体－ － （電子が過剰）－ － －－ －－ －－ － －－－実際には、この時のP型半導体は極めて薄い層になっている。
構造が真逆のPNP接合も存在する。

－接合の境界領域で、元々数の少ない正孔は、すぐに全て電子と結合して、電流は流れない。

－ －－ －－ － －＋＋＋ ＋－－

電流－ －－ －－ － －－小さな
電流

小さな電流が流れることで、正孔が補充され、結果としてトランジスタ全体に電流が流れる。全体を流れる電流の量は小さい電流の量でコントロールされる。

8

５. コンピュータの歴史

第３回目

・ １９４９年 ノイマンのEDVACのレポートに触発されて、モーリス・ウィルクス（英）とケンブリッジ大学数学研究所のチームがEDSAC（= Electronic Delay Storage AutomaticCalculator）を開発。「実用的なプログラム内蔵式コンピュータ」としては世界初のもの。アセンブリ言語で書かれたプログラムを、孔を空けた紙テープによってEDSACに読み込ませた。ケンブリッジ大学内の様々な計算に使用された。
↑EDSAC（Wikipediaより）・ １９５１年 ENIACの開発チームが、ENIACの後継機として、プログラム内蔵式コンピュータEDVACを開発。モークリー＆エッカートとペンシルバニア大学の間で特許問題が生じたため、開発が遅れたらしい。

・ １９５２年 通産省工業技術院電気試験所（現・産業技術総合研究所）が、デジタル式リレー計算機 ETL Mark Iを開発。
・ １９５６年 富士フィルムの岡崎文次が日本初の電子計算機FUJICを開発。レンズ設計の計算に使用された。
↑EDVAC（Wikipediaより）

５. コンピュータの歴史

第３回目

・ １９５８年 テキサス・インスツルメンツのジャック・キルビーとフェアチャイルド・セミコンダクターのロバート・ノイスが、それぞれ独立にIC (integrated Circuit ＝ 集積回路)を開発した。
IC（集積回路） 様々な機能に対する回路構成は、ほぼ決まっており、複雑な回路を一つの小さな半導体にまとめて作りこんだ電子部品の総称。規模によって、
SSI、MSI、LSI、VLSI、ULSI、GSI などと呼ばれるが、慣例的に比較的小規模なものをIC,大規模なものをLSI と呼ぶ。

↑IC（集積回路）の例（Wikipediaより）

ICの名称

素子数

SSI （Small Scale Integration）

2-100

MSI （Medium Scale Integration）

100-1000

LSI （Large Scale Integration）

1000-100k

VLSI （Very Large Scale Integration） 100k-10M
ULSI （Ultra-Large Scale Integration） 10M以上↑回路が焼き込まれたICのウェハー（Wikipediaより）GSI （Giga Scale Integration）

1G以上↑ICの分類

9プライバシー保護のため、この画像の自動ダウンロードをブロック しました。

５. コンピュータの歴史

第３回目

ICの基板となるウェハーには、大抵の場合、シリコン（ケイ素： Si ）が用いられる。高周波回路では、高速スイッチングが可能なガリウムヒ素（GaAs）、低電圧で高速な回路を作りやすいゲルマニウム（Ge）なども使用される。
ウェハーに、光学写真技術を用いて微細な素子や配線を写し込んでマスクとし、周辺部の溶解・上塗りを数１０回も繰り返し、ウェハー上に複雑な複数の回路を作り上げる。
・ １９６５年 インテルの設立者の１人であるゴードン・ムーア（Gordon E Moore）が、集積度（一つのICチップ中のトランジスタ数）の発展に関する経験則“ムーアの法則”を示す。『集積度は１年半で２倍になる』
・ １９７１年 インテルとビジコンが、マイクロプロセッサ（i4004 ： 4bit ）を共同開発する。電卓に搭載された。
コンピュータの中核部分が集積回路化されたことで、小型化、大量生産化され、低価格化が実現した。
・ １９７５年 米MITS社が世界初の消費者向けコンピュータAltair8800を組み立てキットで発売。
・ １９７７年 アップル社から Apple IIが発売される。
・ １９７９年 ＮＥＣ社から PC-8001が発売される。

↑ムーアの法則（Wikipediaより）← Apple II （Wikipediaより）

第３回目

６. １ビット・１バイト● １ビット もっとも簡単な電気信号の情報として、「ある入力信号」が、特定の電圧以上であれば電気回路のスイッチをON、以下であればOFFにすることで、「１」か？「０」か？という情報をコンピュータ中で作り出すことが出来る。
「０」か「１」か、という情報量 １ビット・ ジョン・フォン・ノイマンと共にコンピュータ開発に関わっていた統計学者ジョン・テューキー（John Wilder Tukey）が“binarydigit”（２進数字）を略した“bit”という言葉を使い始める。

１ビット

２ビット

３ビット

０ １０ ０ ００ ０ １

Nビットという情報量は、２N個の １ ０
１ １状態を表現することができる。
１ビット２個、２ビット４個、３ビット８個、４ビット16個、５ビット32個、６ビット64個
７ビット128個、８ビット256個

０ １ ００ １ １

１ ０ ０

１ ０ １

１ １ ０

１ １ １０ または １０ ０

10

６. １ビット・１バイト● ゼロと自然数の表現

第３回目「１０進数」
 「０」から「９」のみで数字を表す方法

１ ０ １  「０」と「１」のみで表される３ケタの数字とみなす。
 「２進数」の数字

８進数 ： ２進数３ケタの数を、１文字で表現できる。

１×２２＋０×２１＋１×２０ = ５０ ０ ０ ＝０

０ ０ １ ＝１０ １ ０ ＝２０ １ １ ＝３

１ ０ ０ ＝４

１ ０ １ ＝５

１ １ ０ ＝６

１ １ １ ＝７２進数であることを明記するためには、括弧を用いて、（１０１）2 と表記する。

（７５）10 = １×８2＋１×８1＋３×８0= （１１３）8８ビットが主流に  １６進数
０、１、２、３、４、５、６、７、８、９、Ａ、Ｂ、
Ｃ、Ｄ、Ｅ、Ｆ、１０、１１、・・・、１９、１Ａ、
１Ｂ、・・・、１Ｆ、２０、２１、・・・（１１１０１）2 = （０００１,１１０１）2= （１,１３）10 = （１,D）16「基数変換」= （１D）16 ［ = １Ｄ ］

６. １ビット・１バイト

第３回目● 文字の表現
一つ一つの文字を、２進数の符号に対応させる（符号化＝エンコード）。
・ アルファベット２６文字×２（大文字、小文字） ： ５２個・ １０進数の数字 = ０～９ ： １０個
・ その他の記号 ： そこそこ
１ビット２個、２ビット４個、３ビット８個、４ビット16個、５ビット32個、６ビット64個
７ビット128個、８ビット256個
８ bit の情報量 ＝ １バイト（Byte）

８ bit あれば余裕で表現できる。
１バイト文字日本語の表現では多くの漢字を扱うため、１バイトでは足りず、２バイト、つまり１６ bit （６５,５３６まで表現可能）で行われる  ２バイト文字
日本語文字では、印刷・組版の慣用語から、２バイト文字を全角文字、これに対して、１バイト文字を半角文字と呼ぶ。
トウキョウガクゲイダイ（全角）ﾄｳｷｮｳｶﾞｸｹﾞｲﾀﾞｲ（半角）11６. １ビット・１バイト

第３回目● 文字コード（主に漢字コード）・ ASCII（= American Standard Code for Information Interchange）
数字やアルファベットをコンピュータ上で扱うための符号化方式（文字コード）。
・ ISO/IEC ６４６
ASCIIを元に規定された国際標準化機構（ISO）標準の文字コード。
・ JIS漢字コード
日本工業規格として制定された漢字コード。
・ ISO-2022-JP
インターネット上で用いられる日本語用の文字符号化方式。
・ Shift-JIS漢字コード
JISコードの空いたコードを詰める・埋めるなどによって作られた漢字コード・ ECU-JP （= Extended UNIX Code Packed Format for Japanese、日本語EUC）
日本語をUNIX上で用いるための文字コード（符号化方式）の一つ。
・ Unicode
文字符号化方式や符号化文字集合などを定めた規格。世界中で使われる文字を共通に利用できるように定められた。UTF-7、UTF-8、UTF-16、UTF32、UTF-9など。

第３回目

本日の演習（その２）電卓（他のアプリケーションでも可）を用いて様々な数の基数変換を行う。
MacOS X の場合・ 電卓を起動する 「スタートメニュー」  「すべてのアプリ」

・ Finder の「アプリケーション」

 「電卓」

 「計算機」

・ 電卓を「プログラマー」仕様にする
 左上の「三」さらに、 「表示」  「プログラマ」

 サイドメニュー中から「プログラマー」を選択（注意）① （１５３）10 を、２進数、８進数、１６進数に基数変換せよ。
② （１１００１０１０）2 を、１０進数、１６進数に基数変換せよ。
③ （５Ｂ）16 を、２進数、１０進数に基数変換せよ。

「Bin」  ２進数「Oct」  ８進数「Dec」  １０進数
「Hex」  １６進数

12