ハードウェア、メモリ、数、文字の表現

					2006年4月18日
コンピュータリテラシ

                                       筑波大学 電子・情報工学系
                                       コンピュータサイエンス専攻
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2006/2006-04-21
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/

■連絡事項

履修申請時の科目番号を間違えないように注意する。
  • 次回4月25日火曜日は、実習室 3C205 に集合。(3A309ではない)
  • 手引き(教育用計算機システム使用の手引き)を持って来る。

    ■復習

    ■補足

    ■情報処理の3つの形態

    コンピュータは、情報を扱うための機械。 情報や情報処理の定義は、けっこう難しい。

    新城の定義。情報とは、コピーしても同じものと思えるもの。物は、コピーす ると別のものになる。お金は、情報だがコピーしてはいけない。

    新城の定義(その2)。情報とは、情報処理の対象となるもの。情報処理とは、 次の3つ。

    計算(computation)
    数の加減乗除、文字列の比較・置き換え、選択など。 プログラミング言語でできることは、主にこれ。 メモリ中のものしか計算の対象にならない。 CPUは、メモリ中のデータしか書き換えられない。
    通信(communication)
    データをあるコンピュータ(プロセス)のメモリから別のコンピュータ(プロ セス)のメモリにコピーすること。
    記憶(storage)
    「整理」して、永続的な記憶にコピーする。
    実際には、いろいろな要素が混じって、厳密には分類不可能。

    ディジタル・コンピュータによる情報処理

    人間による情報処理

    内部でどうやっているかは、よくわからない。

    外から見える人間の情報処理

    人間の対話では、実は、non-verbal 的な情報(文字にならない情報)のやり取り が多い。非言語的な情報は、コンピュータで扱うことは苦手。

    ■コンピュータの構成要素

    ハードウェアは、分解するすると目に見える。 ソフトウェアは、(有用な)ビット列。目に見えない。

    ◆ハードウェア

    CPU、メモリ、ディスプレイ、ディスク、キーボード、ネットワーク

    図? ハードウェアの構成要素

    ◆記憶のためのハードウェア

    コンピュータの中では、いろいろな種類の記憶のための ハードウェア、すなわち、メモ リが使われている。もっとも重要なものは、メインメモリ(主記憶)と呼ばれ ているもので、単にメモリといった時には、メインメモリを差す。

    メインメモリは、IC(Integrated Circuit、シリコンという元素による半導 体で作られた電気回路)でできている。その他に、ハードディスクやフロッピ・ ディスクも重要な記憶のための部品である。

    メモリ(RAM(Random Access Memory))
    実行中のプログラムを保持する。加工するデータを一時的に保持する。 非常に速い。容量は、ハードディスクよりは小さい。値段が高い。 (揮発的(電源を切ると消えてしまう)。)
    ハード・ディスク (HD(Hard Disk), HDD(Hard Disk Drive))
    プログラムやデータをデータを保持する。 容量は、メモリより大きい。値段が安い。 (永続的である(電源を切っても残っている)。)

    保存する==書く、取り出す==読む

    ビット(bit)

    ディジタル・コンピュータであつかえる情報の最小単位。

    1ビットの情報で表現できること

    1ビットでは、あまり大したことはできないので、複数ビットまとめて(ビッ トの並び、ビット列)にしてあつかう。

    バイト(byte)

    コンピュータでは、8ビットをまとめて扱うことが多い。 8ビット==1バイトという。

    1バイトあるとできること

    メモリには、数字で番地(アドレス)が付いている。 バイト単位で番地がついているコンピュータが主流。 番地を指定して、1バイトのデータを保存したり、番地を指定して1バイトの データを取り出せたりする。

    ◆ワード

    あるコンピュータで最も効率よく計算できるビットの数。コンピュータによっ て異なる。32ビット(4バイト)のものが多い。

    ◆ブロック

    ハードディスクなどの記憶媒体とは、1ビット単位や1バイト単位では情報を 読み書きできない。もっと大きな単位でしか読み書きできない。 入出力する単位をブロックと呼ぶ。

    1ブロックは、512バイト〜8192バイトが多い。 記憶媒体によって違う。

    ◆表記

    次のような記号が使われることがある。
    b (小文字)
    bit
    B (大文字)
    Byte

    情報量の単位、ビットやバイトには、次のような係数とともに使われる。

    K (キロ(kilo-)、ケイ)
    1 K == 1000 または 1024
    M (メガ(Mega-))
    1 M == 1000 K または 1024 K または 1,000,000 (100万)
    G (ギガ(Giga-))
    1 G == 1000 M または 1024 M または 1,000,000,000 (10億)
    T (テラ(Tera-))
    1 T == 1000 G または 1024 G または 1,000,000,000,000 (1兆)
    1024 == 210

    ◆計算のための部品

    CPU (Central Processing Unit、中央処理装置、中央演算装置)は、コンピュー タの計算を行う部品である。MPU (Micro Processing Unit) と言われることも ある。

    CPU は、内部に 数が少ないが、計算の中間結果を置くための高速な 小容量の記憶のための部品(レジスタ)と 計算のための部品(ALU、Arithmetic Logic Unit)を持つ。

    CPU は、次の動作を、ひたすら繰り返す

    CPU は、メモリ(主記憶)に入っいているプログラムに従って、やはりメモリ (主記憶)に入っいているデータを操作する。CPU が実行できるプログラムは、 機械語と呼ばれる。

    CPU の種類によって、プログラム(機械語)が違う。 プログラム(ソフトウェア)を買う時には、CPU の種類に気をつける。

    CPU は、コンピュータの速度を決める重要な要素となる。 (CPUだけ速くても他の部品が遅いと、全体として遅くなることがある。)

    CPUが速いほど、計算は速い。CPUの速さは、クロックの周波数(単位は、Hz)を 目安にできる。たとえば、1GHz の CPU は、2GHz の CPU の2倍の速度が 出ると期待できる。ただし、CPU の種類が違うと直接的な比較はできない。

    1つの機械語は、単純なことしかできない。

    複雑な仕事も、全て単純な命令の組合わせで実現できる。 1秒間に、クロックの数と同じ程度の数の機械語が実行できる。

    コンピュータの処理には、CPU による加工だけでなく、加工を伴わな いコピーもかなり多い。コンピュータの性能を決めるのは、CPU の計算だけで はない。特にハードディスクからメインメモリに対するコピーの速度や、ネッ トワークを経由したコピーの速度も大きな影響を与える。

    メインメモリをたくさん積むと、ハードディスクからメインメモリへのコピー の回数が減らせる。前にメインメモリにコピーしたデータを、それだけたくさ ん残しておけるからである(ディスク・キャッシュ)。

    クロックとは、コンピュータの内部でタイミングをとるために使われている、 一定時間ごとに0と1が交代するようになっている電気信号。

    クロックの速度は、時間で図る(小さい方がよい)よりも、その逆数の動作周 波数(大きい方がよい)で図ることが多い。

    iMac は、2,100,000,000 Hz。

    1 clock [s] == 1/(2,100,000,000 [Hz]) == 0.476 ナノ秒

    システムプロファイラ、iMac G5、2.1GHz

    図? iMac G5 の CPU

    ◆キャッシュ

    メモリは、CPU と比べると遅すぎる。 小容量の高速なメモリ(キャッシュ)を CPU の近くに置く。
    ハードウェア 時間
    レジスタ 1クロック
    L1キャッシュ 数クロック
    L2キャッシュ 10クロック
    メインメモリ 数十クロック
    ハードディスク 数百万クロック

    ◆通信のためのハードウェア

    日を改めて。

    ■情報量の感覚

    慣れないうちは空間や距離の感覚に置き換えるとよい。
    1 ビット
    白と黒の区別
    1 バイト (8ビット)
    ヨーロッパ系文字 1 文字。256色。
    2 バイト (16ビット)
    日本語の漢字 1 文字。60000色。
    3 バイト (24ビット)
    1677万色(2の24乗)。コンピュータのモニタの画素の色数。
    4 バイト (32 ビット)
    現在広く使われているコンピュータが 一度に計算できる情報量。整数なら40臆程度まで。
    256 ビット (32バイト)
    16ドット×16ドットの白黒の画像(ビットマップ)で 漢字 1 文字を表現した時の情報量。
    数 k バイト
    典型的な電子メール1通の大きさ。数千文字。
    8k バイト (8000 バイト、64 k ビット, 64,000 ビット)
    1秒間に電話の品質で音声を記録した時の情報量。
    1 M バイト (1,000,000 バイト, 8,000,000 ビット)
    フロッピディスク1枚に保存できる情報量。
    256M バイト〜8GB バイト
    一度にメインメモリに入る量(構成によって違う)
    640M バイト (640,000,000 バイト)
    CD 1 枚に保存できる情報量。
    4.7G バイト (5,000,000,000 バイト)
    DVD 1 枚(片面2層)に保存できる情報量。
    50 G バイト〜500G バイト
    ハードディスクの容量(構成によって違う)

    ◆符号化

    コンピュータで扱えるように、情報をビット列(符合、コード)に対応さ せる。

    ■数の符号化

    1ビットで表せるのは、2種類。0と1を表現できればよい時には、1ビット でもよい。

    もっと大きい数を扱う時には、複数ビットをまとめてあつかう。 ビットごとに、 20 21 22 23 ... と 重みを変える(2進法)。 たとえば、

    101 (2進法)

    だと

    22+20== 4 + 1 == 5 (10進法)

    を意味する。

    ◆2進数、16進数、10進数

    ----------------------------------------------------------------------
    2進	 16進	10進
    ----------------------------------------------------------------------
        0	 0	 0
        1	 1	 1
       10	 2	 2
       11	 3	 3
      100	 4	 4
      101	 5	 5
      110	 6	 6
      111	 6	 7
     1000	 8	 8
     1001	 9	 9
     1010	 A	10
     1011	 B	11
     1100	 C	12
     1101	 D	13
     1110	 E	14
     1111	 F	15
    10000	10	16
    ----------------------------------------------------------------------
    
    16進数(16進法)では、10進で 10 から 15 の代わりに、アルファベッ トのA から F を使う。16進数の計算ができる必要はないが、 転記する必要がでてくることがある。

    ◆コンピュータで扱える数の種類

    整数と小数に分けられる。

    ◆整数

    ビット数によって、扱える範囲が違う。 正の数だけでなくて負の数も扱う時には、正か負かを表すために1ビット使う。 普通は、2の補数という方式を使うので、負の部分が1つ大きい。

    2の補数は、算盤で負の数を扱う時と同じ方法。 −nを、nを加えると、0(桁溢れ)になるよう。

    ◆小数

    固定小数点は、ドルを考えるとわかる。整数 100 を、1 と思う。

    ◆浮動小数点(floating point)

    m × R e

    指数部 e と小数部 m の組で、小数を表す。e, m は整数。R は、2 が使われ ることが多い。(10 が使われることも、16 が使われることもある。)

    ◆その他

  • 分数(有理数)
  • 複素数 あまり使われない。

    ◆誤差とオーバーフロー

    数の計算でも、コンピュータは、間違えることがある。

    その前に、そもそもプログラム(コンピュータを制御するための手順)は人間 が作ったものである。

    ■文字の符号化

    文字セット

    利用する文字を明確に限定したも。

    コンピュータとは関係ない文字セット

    文字の符号化

    文字の符号化(encoding)とは、文字とビット列(または整数)を対応させるこ とである。対応のさせかたには何種類もある。
    A	1
    B	2
    C	3
    ...
    Z	26
    
    モールス符合。

    あ	11
    い	12
    う	13
    え	14
    お	15
    か	21
    ...
    さ	31
    ...
    

    ◆ASCII(アスキー)

    英語のアルファベット(大文字、小文字)や数字や記号などの文字を符号化す るために、現在もっともよく使われている対応表は、ASCII(American Standard Code for Information Interchange)。

    英文の電子メール、C言語のプログラミングなどで使われている。

    ASCII というと、符号化の方法だが、文字セットを意味することもある。 文字セットでは、ASCIIのうち印刷可能な94文字を意味する。ASCII では、 印刷可能な文字以外に、印刷できない制御文字も定義している。

    ASCII では、7ビットで文字を表現している。10進では0から128, 16進では 0 から 7F までである。

    ASCII コード表 
    +---------------------------------------------------------------+
    | 00 NUL| 01 SOH| 02 STX| 03 ETX| 04 EOT| 05 ENQ| 06 ACK| 07 BEL|
    | 08 BS | 09 HT | 0A NL | 0B VT | 0C NP | 0D CR | 0E SO | 0F SI |
    | 10 DLE| 11 DC1| 12 DC2| 13 DC3| 14 DC4| 15 NAK| 16 SYN| 17 ETB|
    | 18 CAN| 19 EM | 1A SUB| 1B ESC| 1C FS | 1D GS | 1E RS | 1F US |
    | 20 SP | 21  ! | 22  " | 23  # | 24  $ | 25  % | 26  & | 27  ' |
    | 28  ( | 29  ) | 2A  * | 2B  + | 2C  , | 2D  - | 2E  . | 2F  / |
    | 30  0 | 31  1 | 32  2 | 33  3 | 34  4 | 35  5 | 36  6 | 37  7 |
    | 38  8 | 39  9 | 3A  : | 3B  ; | 3C  < | 3D  = | 3E  > | 3F  ? |
    | 40  @ | 41  A | 42  B | 43  C | 44  D | 45  E | 46  F | 47  G |
    | 48  H | 49  I | 4A  J | 4B  K | 4C  L | 4D  M | 4E  N | 4F  O |
    | 50  P | 51  Q | 52  R | 53  S | 54  T | 55  U | 56  V | 57  W |
    | 58  X | 59  Y | 5A  Z | 5B  [ | 5C  \ | 5D  ] | 5E  ^ | 5F  _ |
    | 60  ` | 61  a | 62  b | 63  c | 64  d | 65  e | 66  f | 67  g |
    | 68  h | 69  i | 6A  j | 6B  k | 6C  l | 6D  m | 6E  n | 6F  o |
    | 70  p | 71  q | 72  r | 73  s | 74  t | 75  u | 76  v | 77  w |
    | 78  x | 79  y | 7A  z | 7B  { | 7C  | | 7D  } | 7E  ~ | 7F DEL|
    +---------------------------------------------------------------+
    

    たとえば、「ABC」という3文字は、コンピュータの内部では、41 42 43 (16 進)と表現されている。「123」という3文字は、31 32 33 (16進)と表現さ れている。このように、文字と数字は違う。「1」という文字が数値と しは16進で 31 (10進では48) と表現される。

    ASCII コード表で、16進で 00 から 1F と 7F は、普通の文字ではない。 これらは、制御文字(control character,制御コード)と呼ばれている。 制御文字は、通信速度の制御に使ったり、行末を表わしたり文字を 消したりするのに使われる。キーボードで、Control-A と打つと、制御文字 を打ったことになる。

    重要な制御文字

    0D (CR, Carriage Return)
    復帰(リターン)
    0A (NL, New Line)
    改行
    09 (HT, Horizontal Tab)
    水平タブ
    08 (BS, Back Space)
    後退
    1B (ESC, Escape)
    エスケープ
    7F (DEL, Delete)
    削除

    ASCII のバックスラッシュ 「\ (16進数で5C)」は、日本語のJISローマ字文字 集合で円記号「¥ (16進数で5C)」と同じ値になっている。

    ◆ISO Standard ISO8859-1 Latin-1

    Latin-1コード表

    8ビット符号。 20(16進)から7F(16進)までは、ASCII と同じ。 西ヨーロッパでよく使われている。

    ◆JIS X 201

    JIS X 201 コード表

    ◆漢字コード

    JIS漢字コード表の一部

    漢字1文字を、16ビットで表す。16進で2121から747Eまでの範囲にある。た だし、ただし、半分は空いている。16ビットを、8ビットずつに分ける時に、 それぞれ 21〜7E に入るようになっている。

    参考:

    http://www.hlla.is.tsukuba.ac.jp/~yas/classes/ipe/nitiniti2-enshu-1996/1996-11-18/kanji-code.html
    漢字コードに関する解説

    ◆漢和辞典

    漢和辞典では、JIS漢字コードを目にすることがある。

    漢和辞典

    旺文社漢和辞典より。1986年。ISBN 4-01-077522-X。

    残念ながら、漢字コードから漢字が引けない。

    ◆漢字をコンピュータへ打ち込む

    現在、かな漢字変換が主流だが、読み方がわからない時、かな漢字変換用辞書 に載っていないときには漢字コードで指定することもできる。

    MacOSX では、「文字パレット」も使える。

    ◆文字の符号化の意義

    文字を符号化することには、いくつかの意義がある。 比較できることは、検索の時に便利。画像では検索しにくい。

    逆に文字を符号化してしまうと、個人の性質を出したい時には、問題がある。 たとえば、署名やラブレター。

    ◆文字化け

    文字の符号化には、何種類もある。符号化の方法を知らないと「文字化け」を 起こす。

    日本語の符号化には次の4つがよく使われる。

    コンピュータ上では同じビット列でも、文字コードの違いにより解釈が異なる。 この場合、「文字化け」を起こす。

    文字化けを起こした時には、これらを切り替えてみると直ることがある。

    ■課題2

    課題2 ハードウェア、メモリ、数、文字の表現
    Last updated: 2006/05/22 19:36:35
    Yasushi Shinjo / <yas@is.tsukuba.ac.jp>