ハードウェア、数、文字の表現
2017年04月28日
情報科学類 コンピュータリテラシ
筑波大学 システム情報系 情報工学域
新城 靖
<yas@cs.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2017/2017-04-28
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
■連絡事項
- 次回 5月2日火曜日 は、
講義室 3A209 に集合。
■情報処理の3つの形態
コンピュータは、情報を扱うための機械。
情報や情報処理の定義は、けっこう難しい。
新城の定義。情報とは、コピーしても同じものと思えるもの。物は、コピーす
ると別のものになる。お金は、情報だがコピーしてはいけない。
新城の定義(その2)。情報とは、情報処理の対象となるもの。情報処理とは、
次の3つ。
- 計算(computation)
-
数の加減乗除、文字列の比較・置き換え、選択など。
プログラミング言語でできることは、主にこれ。
メモリ中のものしか計算の対象にならない。
CPUは、メモリ中のデータしか書き換えられない。
- 通信(communication)
-
データをあるコンピュータ(プロセス)のメモリから別のコンピュータ(プロ
セス)のメモリにコピーすること。
- 記憶(storage)
-
「整理」して、永続的な記憶にコピーする。
実際には、いろいろな要素が混じって、厳密には分類不可能。
- 記憶媒体を移動させる/共有すると通信になる。
- 通信内容を保存することもできる。
ディジタル・コンピュータによる情報処理
- 情報を「ビット列(ビットの並び)」に変える(符合化)。
- ビット列を、プログラムに従って処理(計算、通信、記憶)する。
- プログラムもまたビット列として与える。
人間による情報処理
内部でどうやっているかは、よくわからない。
外から見える人間の情報処理
- 計算(computation)
- 数の計算。1+2=3。
- フィルタリング。必要な情報を選び出す。
- 通信(communication)
- 電話する。
- 黒板に字を書く。
- マスメディアを使う。テレビ、新聞、放送。
- 直接会って会話する。ボディ・ランゲージ。non-verbal (非言語的)
- 記憶(storage)
人間の対話では、実は、non-verbal な情報(文字にならない情報)のやり取り
が多い。非言語的な情報は、コンピュータで扱うことは苦手。
講義内容も、印刷された資料/Webの資料の情報量よりも非言語的な情報が多い。
■コンピュータの構成要素
The Unix Super Text 2章 参照。
- ハードウェア
- CPU, メモリ, ハードディスク、キーボード、マウス、ディスプレイ、ネットワーク
- ソフトウェア
- アプリケーション・ソフトウェア
- WWWブラウザ
- 電子メール・リーダ
- ワードプロセッサ
- ゲーム
- システム・ソフトウェア
- オペレーティング・システム
- プログラミング言語処理系
- ネットワーク・プロトコル通信プログラム
- データベース
ハードウェアは、分解するすると目に見える。
ソフトウェアは、(有用な)ビット列(ビットの並び)。目に見えない。
◆ハードウェア

図? ハードウェアの構成要素
◆記憶のためのハードウェア
- メモリ(メインメモリ)、RAM(Random Access Memory)、主記憶
- 実行中のプログラムを保持する。加工するデータを一時的に保持する。
IC(Integrated Circuit、シリコンという元素による半導
体で作られた電気回路)で作られているので、速い。
容量は、ハードディスクよりは小さい。値段が高い。
(揮発的(電源を切ると消えてしまう)。)
- ハード・ディスク (HD(Hard Disk), HDD(Hard Disk Drive))、
ストレージ、二次記憶
- プログラムやデータをデータを保持する。
容量は、メモリより大きい。値段が安い。
(永続的である(電源を切っても残っている)。)
保存する==書く、取り出す==読む
ハード・ディスク(HDD) の代わりに、SSD (Solid State Drive) を備えている
コンピュータも多い。SSD は、IC でできているが、電源を切っても内容が消え
ない。フラッシュメモリという技術がよく使われる。
ビット(bit)
ディジタル・コンピュータであつかえる情報の最小単位。
1ビットの情報で表現できること
1ビットでは、あまり大したことはできないので、複数ビットまとめて(ビッ
トの並び、ビット列)にしてあつかう。
バイト(byte)
コンピュータでは、8ビットをまとめて扱うことが多い。
8ビット==1バイトという。
1バイトあるとできること
- 英語のアルファベット、大文字小文字、数字、記号など1文字
- 0から255までの数
- 白から黒まで256階調の濃淡
- キーボードのキーの区別(256個まで)
メモリには、数字で番地(アドレス)が付いている。
バイト単位で番地がついているコンピュータが主流。
番地を指定して、1バイトのデータを保存したり、番地を指定して1バイトの
データを取り出せたりする。
◆ワード
あるコンピュータで最も効率よく計算できるビットの数。コンピュータによっ
て異なる。パーソナル・コンピュータでは、32ビット(4バイト)や 64 ビット
(8バイト)のものが多い。
◆ブロック
ハードディスクなどの記憶媒体とは、1ビット単位や1バイト単位では情報を
読み書きできない。もっと大きな単位でしか読み書きできない。
入出力する単位をブロックと呼ぶ。
1ブロックは、512バイト〜8192バイトが多い。
記憶媒体によって違う。
◆計算のための部品
CPU (Central Processing Unit、中央処理装置、中央演算装置)は、コンピュー
タの計算を行う部品である。プロセッサ(processor)、
MPU (Micro Processing Unit) と言われることも
ある。
CPU は、内部に
数が少ないが、計算の中間結果を置くための高速な
小容量の記憶のための部品(レジスタ)と
計算のための部品(ALU、Arithmetic Logic Unit)を持つ。
CPU は、次の動作を、ひたすら繰り返す
- メモリから命令を取り出す。命令を取り出す
番地を保持しているレジスタをプログラム・カウンタと
いう。命令を取り出すとプログラム・カウンタを増やす。
- 命令に従い、次のような動作を行う
- メモリからレジスタにデータをコピーする。
- レジスタからメモリにデータをコピーする。
- レジスタとレジスタの内容を、ALU をつかって計算し、レジスタに保存する。
- プログラム・カウンタの値を、
単純に増やすのではなく、
指定された番地に設定する。
CPU は、メモリ(主記憶)に入っいているプログラムに従って、やはりメモリ
(主記憶)に入っいているデータを操作する。CPU が実行できるプログラムは、
機械語と呼ばれる。
CPU の種類によって、プログラム(機械語)が違う。
プログラム(ソフトウェア)を買う時には、CPU の種類に気をつける。
- x86, x86-64 (Intel Core, Pentium, AMD64)
- ARM (Cortex, XScale, Apple Ax)
- SH
- PowerPC
- SPARC
CPU は、コンピュータの速度を決める重要な要素となる。
(CPUだけ速くても他の部品が遅いと、全体として遅くなることがある。)
CPUが速いほど、計算は速い。CPUの速さは、クロックの周波数(単位は、Hz)を
目安にできる。たとえば、2GHz の CPU は、1GHz の CPU の2倍の速度が
出ると期待できるが、実際には周波数以外の技術で高速化がなされることも
多い。CPU の種類が違うと周波数の比較の意味はない。
◆CPUが行う計算の種類
- 四則演算(+、−、×、÷)
- ビット演算
- 論理演算(and, or, not, exclusive or)
- シフト、ローテート
- 条件分岐
- コピー
コンピュータでは、
「×」を「*」、「÷」を「/」で表記することが多い。
◆通信のためのハードウェア
日を改めて。
◆単位
情報量の単位。
- ビット(bit,b(小文字))
- コンピュータで扱う情報の最小単位。
- バイト(byte,B(大文字))
- 欧米(ASCII, Latin-1)なら1文字を扱える情報量。
1バイトは、8ビットに等しい。
情報量の単位、ビットやバイトには、次のような係数とともに使われる。
- 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兆)
- P (ペタ(Peta-))
- 1 P == 1000 T または 1024 T または 1,000,000,000,000,000 (1000兆)
- E (エクサ(Exa-))
- 1 E == 1000 P または 1024 P または 1,000,000,000,000,000,000 (100京)
1024 == 210
◆情報量の感覚
慣れないうちは空間や距離の感覚に置き換えるとよい。
- 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 バイト〜32GB バイト
- 典型的なパソコンで、一度にメインメモリに入る量(構成によって違う)
- 640M バイト (640,000,000 バイト)
- CD 1 枚に保存できる情報量。
- 4.7G バイト (5,000,000,000 バイト)
- DVD 1 枚(片面1層)に保存できる情報量。
- 1G-1T バイト
- USBフラッシュメモリ, SD(SDHC)カード 1 個に保存できる情報量。
- 25/50/100/128 G バイト
- Blu-ray Disc 1 枚に保存できる情報量。
- 80 G バイト〜8T バイト
- ハードディスクの容量(構成によってかなり違う)
■符号化
コンピュータで扱えるように、情報をビット列(符合、コード)に対応させる。
■数の符号化
The Unix Super Text 下巻56章 参照。
◆数の意味と表現
- 数の意味(数値、数)
- 「2」、「二」、「II」と書いても同じ
- 数の表現
- 「2」、「二」、「II」は意味は同じでも表現は違う
◆非負整数
0、1、2、・・・の表現を考える。
有限の文字(数字,digit)の組み合わせが便利。<−>(one,two,...,ten,eleven,twelve,thirteen,...)と対比して。
- n進法
- n個の数字で数値を表現する方法
- n進数
- n進法で表現された数字
- 基底(base)
- n進法のn。基底自身は10進法で表現するのが普通。
◆n進数
表現:
意味:
◆10進数
表現: 101
意味:
◆2進数
表現: 101
意味:
◆8進数、16進数
n=8, n=16の意味。2進数で3桁、4桁をまとめて表す。
16進数では、10進数の10〜15を表すのに、A〜Fを使う。
16進数を表すのに、頭に 0x を付けることがある。C 言語の表記方法。
8進数を表すのに、頭に 0 を付けることがある。C 言語の表記方法。
16進数を転記する必要がでてくることがある。
- 漢字コード。漢字の打ち込み。漢和辞典との対応。
- World Wide Web での色の指定。
- IPアドレスやMAC (Media access control) アドレス。
ネットワークに接続されているコンピュータ1台1台についているアドレス。
次のような計算が必要になることがある。
- and, or, not
- 繰り上がりがないたし算(or)
- 繰り上がりがない引き算(and)
◆2進数、8進数、16進数、10進数
2進数 8進数 10進数 16進数
0 0 0 0
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
100000 40 32 20
1000000 100 64 40
10000000 200 128 80
100000000 400 256 100
1000000000 1000 512 200
10000000000 2000 1024 400
100000000000 4000 2048 800
1000000000000 10000 4096 1000
10000000000000 20000 8192 2000
100000000000000 40000 16384 4000
1000000000000000 100000 32768 8000
10000000000000000 200000 65536 10000
◆10進数を2進数で表現する
方法1
- 2で割る。
- 余りを1番右の桁に書く。
- 商を2進数で表現して左につなげる。
例

図? 10進数の21を2進数で表現する
方法2
- 上の表を見て、10進数の桁で大きなものから引けるものを引く。
- 1. で引けた2進数を全部加える。
方法3
- 16進数で表現する。
- 16進数の各桁を、2進数で表現する。
◆10進数を16進数で表現する
方法1
- 16で割る。
- 余りを16進数で1番右の桁に書く。
- 商を16進数で表現して左につなげる。
方法2
- 2進数で表現する。
- 2進数の表現を16進数に変換する。
◆2進数を16進数へ変換する
- 下位から4ビットごとに区切る。
- それぞれを16進数で書く。
◆コンピュータで扱える数の種類
整数と小数に分けられる。
◆整数
ビット数によって、扱える範囲が違う。
- 1ビット (0-1)
- 2ビット (0-3)
- 3ビット (0-7)
- 4ビット (0-15)
- 8ビット (0-255)
- 16ビット (0-65535)
- 32ビット (0-4294967295)
- 64ビット (0-18446744073709551615)
正の数だけでなくて負の数も扱う時には、正か負かを表すために1ビット使う。
- 8ビット (-128-127)
- 16ビット (-32768-32767)
- 32ビット (-2147483648-2147483647)
- 64ビット (-9223372036854775808-9223372036854775807)
普通は、「2の補数」という方式を使うので、負の部分が1つ大きい。
2の補数は、算盤で負の数を扱う時と同じ方法。
−nを、nを加えると、0(桁溢れ)になるよう。
The Unix Super Text 56.1.2節 参照。
◆小数
表記する時には、小数点を使う。
表現:
(小数点の左側に m 桁、右側に i 桁)
意味:
整数は、任意の進法で正確に表現できるが、小数は表現できないことがる。
コンピュータの内部で、小数を2進法で扱う方法が主流だが、
会計分野等で10進法で扱う場合もある。
◆小数の符号化
- 固定小数点(fixed point)。
- 浮動小数点(floating point)。
固定小数点は、ドルを考えるとわかる。整数 100 を、1 と思う。
◆浮動小数(floating point)
小数を次のように考え、
指数部 e と小数部(仮数部) f の整数の組で表現する。
f × b e
b は、2 が使われることが多い。(10 が使われることも、16 が使われることも
ある。)
浮動小数点に関して、標準規格(IEEE 754)がある。b=2。
単精度(float)は、全体で 32 ビット(符号(正負)1ビット、f に 23ビット、e に 8 ビット)。
倍精度(double)は、全体で 64 ビット(符号(正負)1ビット、f に 52ビット、e に 11 ビット)。
◆その他
直接利用できるプログラミング言語もある。
◆誤差とオーバーフロー
数の計算でも、コンピュータは、間違えることがある。
- 整数や固定小数点では、表せる範囲に注意する。たとえば、32ビットだ
と、40億ちょっとまでしか表せないので、国家予算の計算には使えない。
- 浮動小数では、計算の誤差に注意する。表せる範囲内(指数部で決まる)
であったとしても、計算の途中に誤差が生じる(小数部の桁が溢れる)。特に、
加減算で精度が落ちる。
その前に、そもそもプログラム(コンピュータを制御するための手順)は人間
が作ったものである。
◆基数の変換
- bcコマンドで obase, ibase を設定する。The Unix Super Text 56.1.7節 参照。
- スクリプト言語の printf() を使う。
- デバッガの表示機能を使う。
■文字の符号化
The Unix Super Text 下巻56章 参照。
文字集合(文字セット、character set)
利用する文字を明確に限定したも。
コンピュータとは関係ない文字集合
文字の符号化
文字の符号化(encoding)とは、文字とビット列(または整数)を対応させるこ
とである。対応のさせかたには何種類もある。
A 1
B 2
C 3
...
Z 26
モールス符合。
あ 11
い 12
う 13
え 14
お 15
か 21
...
さ 31
...
◆ASCII(アスキー)
英語のアルファベット(大文字、小文字)や数字や記号などの文字を符号化す
るために、現在もっともよく使われている対応表は、ASCII(American
Standard Code for Information Interchange)。
国際標準としては、ISO 646。
英文の電子メール、C言語のプログラミングなどで使われている。
ASCII というと、符号化の方法だが、文字集合を意味することもある。
文字集合では、ASCIIのうち印刷可能な94文字を意味する。ASCII では、
印刷可能な文字以外に、印刷できない制御文字も定義している。
ASCII では、7ビットで文字を表現している。10進では0から127,
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
8ビット符号。
20(16進)から7F(16進)までは、ASCII と同じ。
西ヨーロッパでよく使われている。
◆JIS X 201
0 から 255 (0x00-0xFF) に英数字とカタカナを割り当てたもの。
英字部分は、ほとんど同じだが、5C (16進数) と 7E が違う。
◆JIS X 0208
94 区 × 94 点の 8836 の空間を使う。
漢字は、第一水準 2965 文字、第二水準 3384 文字、追加、6文字を含む。
その他に、ギリシャ文字、キリル文字、経線素片、記号を含む。
◆JIS X 0212
「補助漢字」とも呼ばれる。5801文字の漢字とその他の記号を含む。
◆JIS X 0213
第三水準、第四水準を定義して、JIS X 0208 と合わせて 11223 文字が表せる。
◆その他
- 韓国 KS X 1001
- 中国 GB 2312
- 台湾 CNS 11643, Big-5
- Unicode 。世界の主要文字を 16 ビットの範囲内でまとめることを目指し
て作成したもの。結局、16 ビットでは足りなくなり、
Unicode 4.0 では、96,382 文字を含む。
Unicode 4.0 は、国際規格 ISO 10646:2003 と文字集合としては、同じ。
Unicode 8.0 では、120,737 文字を含む。
- Universal Coded Character Set (USC)。国際規格 ISO/IEC 10646。
文字集合としては、Unicode と同じで、同じ文字に同じ数。
◆よく使われる文字集合とエンコーディング
文字集合は、コンピュータの内部に取り込まなくても意味がある。
ある文字集合に含まれる文字を、コンピュータの内部に取り込んで処理するためには、
文字をどのようなビット列(整数)で表すかを決める必要がある。
このビット列での表し方を決めたものがエンコーディング。
ASCII は、7 ビットであるが、1バイト(8ビット)にそのまま入れる。
(1ビット無駄になるが気にしない。)
Latin-1 は、1バイト(8ビット) なので、そのままメモリに入れる。
日本語の場合、次のエンコーディングがよく使われる
エンコーディング | 文字集合 |
JISコード | JIS X 0201, JIS X 0208, JIS X 0212 |
EUC-JP | JIS X 0201, JIS X 0208, JIS X 0212 |
Shift_JIS | JIS X 0201, JIS X 0208 |
UTF-8 | Unicode, USC |
注意
- "JIS" は、エンコーディングと文字集合で意味が違う。
- 同じ文字集合の間では、エンコーディングは相互に変換できる。
JISコード、EUC-JP、Shift_JIS は、相互変換できる。
- 文字集合が違う場合、エンコーディングの変換は部分的にはできる。でき
ないものもある。
JISコードと UTF-8 では相互変換できない文字がある。
変換プログラムが不完全なことも多い。
◆JISコード
文字集合ASCII, JIS X 0201, JIS X 0208, JIS X 0212 を切り替えながら表現
する。切り替えるためのマークを、エスケープシーケンス(Escape Sequence)と
いう。
ASCII, JIS X 0201 は、エスケープシーケンスを挟んで
そのまま使う。
JIS X 0208, JIS X 0212 については、区番号と点番号に 10進で32、
16進で20を加える。
参考:
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 では、「文字ビューア」も使える。
◆文字の符号化の意義
文字を符号化することには、いくつかの意義がある。
- 記憶に要する場所の節約になる(画像で表す方法と比較して)。
- 表示の書体(フォント)、字の大きさを自由に変えることができる。
- 誰が作っても同じ文字は同じ文字として比較することができる。
比較できることは、検索の時に便利。画像では検索しにくい。
逆に文字を符号化してしまうと、個人の性質を出したい時には、問題がある。
たとえば、署名やラブレター。
◆文字化け
文字の符号化には、何種類もある。符号化の方法を知らないと「文字化け」を
起こす。
コンピュータ上では同じビット列でも、文字コードの違いにより解釈が異なる。
間違った文字コードで解釈すると、「文字化け」を起こす。

図? 複数の符号化の方法による解釈
文字化けを起こした時には、解釈方法(文字コード)切り替えてみると直るこ
とがある。
■実習
放課後などに実施してください。
★練習問題(501) MacOSX 文字ビューア
MacOSX の文字ビューアを使いなさい。
(クリックで拡大)
図? MacOSXの文字ビューア
Dock にある「システム環境設定」の絵(アイコン)を、
クリックして実行する。
- 「キーボード」ボタンをクリックして選ぶ。
- 「キーボード」タブをクリックして開く。
- 「メニューバーにキーボードビューアと文字ビューアを表示」
の左側のチェックを入れる
(既に入っている時にはそのまま)。
- 「システム環境設定」を終了する。一番上のメニューバーの「システム環
境設定」メニューから「システム環境設定を終了」を選ぶ。
- 一番上のメニューバーの右側(時刻の左)にある「A」または「あ」を
クリックする。すると、以下のようなメニューが表示される。
(クリックで拡大)
- 「文字ビューアを表示」を選ぶ。
- 左上の「歯車▼」をクリックし、「リストをカスタマイズ」を選ぶ。
- 「カテゴリを選択:」で、「コード表」の中から、次のような
コード表をチェックし、最後に「完了」ボタンを押す。
- Unicode
- ISO-8859-1
- Shift-JIS (X0208)
- X0213 面区点
- 左側のリストから「X0213面区点」をクリックして選ぶ。
- 「文字ビューアを表示」を終了するには、
「文字ビューア」のウィンドウの左上にある赤い丸をクリックする。
「文字ビューア」で次の文字を調べなさい。
- 1面20区33点の文字
- 自分の名前に含まれている文字
- その他
★練習問題(502) Firefox、Webページの文字コード
Web ページでは、様々な文字コードが使われている。いくつかの Web ページで、
どのような文字コードが使われているかを調べなさい。
- Firefox で調べたい Web ページを表示する。
- 一番上のメニューバーで「開発」をクリックし、「ページの情報」を選ぶ。
(クリックで拡大)
- 「一般」タブを開く。
- 「テキストエンコーディング」の所を調べる。
(クリックで拡大)
★練習問題(503) Firefox、文字コードの切替え
Firefox では、Web ページの文字コードを自動的に認識する。
しかし、時々、自動認識が失敗して、
文字化け
を起こす。
次の手順で、Firefox の文字コードを切り替えてみなさい。そして、意図的に
文字化けをおこしたり、文字化けを起こしたページを修復したりしなさい。
- Firefox で Web ページを表示する。
- 一番上のメニューバーで「表示」をクリックしメニューを表示する。
- 「テキストエンコーディング」にマウスカーソルを合わせる。
- 変更したいエンコーディングにマウスカーソルを合わせ、クリックする。
たとえば、「Unicode」や「日本語(ISO-2022-JP)」に合わせて、クリックする。
必要なら、「自動判定」で言語を選ぶ方法も試す。
(クリックで拡大)
★練習問題(504) Firefox、ファイルの表示
この練習問題に取り組む前に、
Finderの表示方法の変更、サイドバー
を行いなさい。そうでないと、「家」のアイコンが表示されない。
Firefox は、Web ページだけでなく、ファイルを表示することもできる。
次の方法で、ファイルを表示してみなさい。
- Firefox を実行する。
- 一番上のメニューバーにある「ファイル」をクリックし、メニューを開く。
- 開いたメニューから「ファイルを開く」をクリックし、選択する。
するとウィンドウが開かれる。
- 開きたいファイルを探す。
- 左側の「よく使う項目」で、家のアイコンをクリックすると、自分のホームディレクトが表示される。
- ウインドウ上部に、ディレクトリ名が表示されている部分がある。
これをクリックすると、親ディレクトリやさらにその親ディレクトリに移動できる。
- ディレクトリ名をダブルクリックするか、ディレクトリ名を選択して「開
く」ボタンを押すと、選択された子供のディレクトリを表示する。
- 「ファイル形式:」を「全てのファイル」にしておくと、様々な種類のファ
イル(テキスト、画像等)が表示できる。
- 最後に、ファイルをクリックして選び、「開く」ボタンを押すとファイルが開かれる。
表示できたら、
練習問題 Firefox、Webページの文字コード
をやってみなさい。
文字化けしたら、
練習問題 Firefox、文字コードの切替え
をやってみなさい。
★練習問題(505) 端末の文字コードの確認
端末では、標準の文字コードが決まっている。次のようなコマンドを実行する
と、それを確認することができる。
$ echo $LANG
ja_JP.UTF-8
$ locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=
$
この例では、言語が日本語、文字コードが UTF-8 であることがわかる。
iTerm 等の端末で、上のコマンドを実行してどうなるか調べなさい。
★練習問題(506) lv コマンド
手引き 2.7.2 参照。
lvコマンドは、長いテキスト・ファイルを対話的に1ページずつ表示するコマン
ドである。lvコマンドで次のような長いテキスト・ファイルを表示してみなさ
い。
- ~/literacy-a2.txt
- ~/literacy-a3.txt
- /usr/share/dict/web2
- /etc/services
例:
$ lv ~/literacy-a2.txt
<表示省略。>
<「:」は、lv コマンドのプロンプト。>
<「:」に対して、lv コマンドを操作するキーを打つ事ができる。>
:
そして、次の機能を確認しなさい。
- 1ページ進める(space,f)
- 1ページもどる(b)
- 1行進める(j)
- 1行もどす(k)
- 終了する。(q)
次のようにして、マニュアルを表示しなさい。
$ lv -h
$ man lv
次のキーの動作を確認しなさい。
キー | 説明 |
スペース | 1ページ進める |
q | 終了 |
f | 1ページ進める(forward) |
b | 1ページもどる(back) |
j | 1行進める |
k | 1行もどす |
g | 先頭にもどる |
G | 末尾にもどる |
/str | 文字列 str をファイルの末尾に向かって探す |
?str | 文字列 str をファイルの先頭に向かって探す |
n | 直前の検索をファイルの末尾に向かって繰り返す(next) |
N | 直前の検索をファイルの先頭に向かって繰り返す(next) |
= | ファイル名、位置(行数)、文字コードを表示する |
★練習問題(507) lvコマンドによるファイルの文字コードの自動変換の確認
lv コマンドは、ファイルの文字コードを自動的に判定し、端末の文字コードに
変換して表示する機能がある。このことを確認しなさい。
たとえば、コンピュータリテラシの課題を含むファイルの漢字コードは、最初
は、EUC-JP になっている。そのファイルをcat コマンドで表示しても、文字化
けする。
$ cat literacy-a2.txt
<表示省略。文字化け>
$
このファイルを lv コマンドで表示すると、きちんと表示される。
$ lv literacy-a2.txt
<表示省略。正しく表示>
<終了するにはqキーを押す>
:q
$
★練習問題(508) lvコマンドによるファイルの文字コードの自動判定結果の表示
lv コマンドは、ファイルの文字コードを自動的に判定している。「=
」
キー使うと、判定結果を表示することができる。
$ lv literacy-a2.txt
<表示省略>
:=
literacy-a2.txt 1/124 [EUC-JP|UTF-8|UTF-8|UTF-8]:
この例では、ファイル「literacy-a2.txt
」の文字コードが「EUC-JP」
と判定していることがわかる。「UTF-8」は、端末の文字コードである。
lv のこの機能を利用してみなさい。
★練習問題(509) ASCII表の表示
man コマンドを用いてASCII表を表示しなさい。そして、16進数(hexadecimal)
による表記が含まれていることを確認しなさい。
$ man ascii
★練習問題(510) nkfコマンド (network kanji finter)
nkf (network kanji finter)は、漢字コードを変換するためのプログラムであ
る。
The Unix Super Text 16.1節 参照。
手引き 2.12.2項 参照。
man nkf参照。
nkf は、cat コマンドで表示すると文字化けするようなファイルを、端末で表
示する時に使う事ができる。たとえば、コンピュータリテラシの課題を含むファ
イルの漢字コードは、最初は、EUC-JP になっている。そのファイルをcat コマ
ンドで表示しても、文字化けする。
$ cat literacy-a2.txt
このような場合、nkf に -w オプションをつけて実行することで、文字コード
を UTF-8 に変換して表示する事で、文字化けを解消できることがある。
$ nkf -w literacy-a2.txt
このことを確認しなさい。
$ cat ファイル名
$ nkf -w ファイル名
nkf では、-w
を含めて次のようなオプションがよく使われる。
- -j
- 出力を JIS に。なにもつけない場合も JIS になる。
- -e
- 出力を EUC-JP に
- -s
- 出力を Shift_JIS に
- -w
- 出力を UTF-8 に
★練習問題(511) nkfによる文字コードの確認
nkf に --guess
オプションを付けると、文字コードを変換するのでは
く、文字コードの推定を行い、推定結果を表示する。このことを確認しなさい。
$ ls literacy-a*.txt
literacy-a2.txt literacy-a3.txt
$ nkf --guess literacy-a*.txt
literacy-a2.txt:EUC-JP (LF)
literacy-a3.txt:EUC-JP (LF)
$
★練習問題(512) iTermが扱う文字コードの確認
iTerm で利用している文字コードを確認しなさい。
標準の設定を変更する方法は、練習問題
iTermの設定
に示した。
次のように、現在開いている iTerm のウィンドウの設定を表示したり、一時的
に変更することもできる。
- 一番上のメニューバーの「View」をクリックし、開いたメニューで、
「Edit Current Session」をクリックして選ぶ。
- Terminal タブを選ぶ。
- 「Terminal Emulation」の下の「Character Encoding」の右にあるボタン
を押す。すると、様々な言語の様々な文字コードが表示される。
- coins の標準は、「Unicode (UTF-8)」である。
- 日本語としては、その他に、「Japanese EUC」と「Japanese Shift JIS」が使える。
- 日本語の「Japanese ISO-2022-JP」は、選択できるが動作しない。
iTerm の文字コードを、一時的に変更するとどうなるか、確認しなさい。
- まず、日本語を表示するようなコマンドを実行してみる。
$ date
$ cal
- 上記の方法で、「Character Encoding」を「Unicode (UTF-8)」から他のものに変更する。
- 変更後、日本語を表示するようなコマンドを再び実行してみる。
$ date
$ cal
★練習問題(513) Thunderbird、文字コードの切替え
Thunderbird は、受け取った電子メールの文字コードを自動的に認識する。
しかし、時々、自動認識が失敗して、
文字化け
を起こす。
次の手順で、Thunderbird の文字コードを切り替えてみなさい。そして、意図
的に文字化けをおこしたり、文字化けを起こしたページを修復したりしなさい。
- Thunderbird で電子メールを表示する。
- 一番上のメニューバーで「表示」をクリックしメニューを表示する。
- 「テキストエンコーディング」にマウスカーソルを合わせる。
- 変更したいエンコーディングにマウスカーソルを合わせ、クリックする。
たとえば、「Unicode」や「日本語(ISO-2022-JP)」に合わせて、クリックする。
必要なら、「自動判定」で言語を選ぶ方法も試す。
(クリックで拡大)
★練習問題(514) Thunderbird、文字コードの切替え(ソース)
Thunderbird でメールのソースを表示している時にも、文字化けを起こすこと
がある。これも同じ方法で解消できることがある。
詳しくは、練習問題
電子メールのテキストの観察
を見なさい。
★練習問題(515) bcコマンドによる基数変換
bcコマンドで obase, ibase を設定することで、基数変換を行いなさい。
The Unix Super Text 56.1.7節 参照。man bc 参照。
★練習問題(516) Rubyによる基数変換
スクリプト言語 Ruby の printf() を使って、基数変換を
行ってみなさい。以下の例は、10進数の100を
16進数で表示したものである。
$ ruby -e 'printf("%x\n",100)'
64
$
%x
は、16進数。%d
は、10進数。%o
は、8進数。
★練習問題(517) gdbによる基数変換
The Unix Super Text 60章 参照。
デバッガ gdb の表示機能(p)を使って、基数変換を行いなさい。以下の例は、
10進数の100を16進数で表示したものである。
$ gdb
(gdb) p/x 100
$1 = 0x64
(gdb) quit
$
■課題5 ハードウェア、数、文字の表現
次のファイルを自分のホーム・ディレクトリ等にコピーしなさい。
そして、そのファイルの指示に従い、内容を埋めなさい。エディタとしては、
今日の課題では、必ず Emacs を使いなさい。
$ ls
(literacy-a5.txtが存在することを確認する)
$ emacs literacy-a5.txt
作成したファイルを、
レポート提出ページから提出しなさい。
Last updated: 2017/04/28 09:46:48
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>