2016年05月06日
情報科学類 コンピュータリテラシ
筑波大学 システム情報系 情報工学域
新城 靖
<yas@cs.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2016/2016-05-06
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
意味:
表現: 101
意味:
表現: 101
意味:
16進数を表すのに、頭に 0x を付けることがある。C 言語の表記方法。 8進数を表すのに、頭に 0 を付けることがある。C 言語の表記方法。
16進数を転記する必要がでてくることがある。
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
2の補数は、算盤で負の数を扱う時と同じ方法。 −nを、nを加えると、0(桁溢れ)になるよう。
The Unix Super Text 56.1.2節 参照。
表現:
(小数点の左側に m 桁、右側に i 桁)
意味:
整数は、任意の進法で正確に表現できるが、小数は表現できないことがる。 コンピュータの内部で、小数を2進法で扱う方法が主流だが、 会計分野等で10進法で扱う場合もある。
小数を次のように考え、 指数部 e と小数部(仮数部) f の整数の組で表現する。
b は、2 が使われることが多い。(10 が使われることも、16 が使われることも ある。)
浮動小数点に関して、標準規格(IEEE 754)がある。b=2。 単精度(float)は、全体で 32 ビット(符号(正負)1ビット、f に 23ビット、e に 8 ビット)。 倍精度(double)は、全体で 64 ビット(符号(正負)1ビット、f に 52ビット、e に 11 ビット)。
コンピュータとは関係ない文字集合
A 1 B 2 C 3 ... Z 26モールス符合。
あ 11 い 12 う 13 え 14 お 15 か 21 ... さ 31 ...
英語のアルファベット(大文字、小文字)や数字や記号などの文字を符号化す るために、現在もっともよく使われている対応表は、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)」と同じ値になっている。
8ビット符号。 20(16進)から7F(16進)までは、ASCII と同じ。 西ヨーロッパでよく使われている。
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 |
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
旺文社漢和辞典より。1986年。ISBN 4-01-077522-X。
残念ながら、漢字コードから漢字が引けない。
MacOSX では、「文字ビューア」も使える。
逆に文字を符号化してしまうと、個人の性質を出したい時には、問題がある。 たとえば、署名やラブレター。
コンピュータ上では同じビット列でも、文字コードの違いにより解釈が異なる。 間違った文字コードで解釈すると、「文字化け」を起こす。
図? 複数の符号化の方法による解釈
文字化けを起こした時には、解釈方法(文字コード)切り替えてみると直るこ とがある。
(クリックで拡大)
図? MacOSXの文字ビューア
(クリックで拡大)
(クリックで拡大)
(クリックで拡大)
2016/05/06 追加。
以下の説明で、Firefox で「家のアイコン」が表示されないことがある。 この時は、Finder で設定を変更すると、表示されるようになる。
(クリックで拡大)
(クリックで拡大)
2016/05/06 追加終わり。
Firefox は、Web ページだけでなく、ファイルを表示することもできる。 次の方法で、ファイルを表示してみなさい。
$ 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 等の端末で、上のコマンドを実行してどうなるか調べなさい。
| キー | 説明 |
|---|---|
| スペース | 1ページ進める |
| q | 終了 |
たとえば、コンピュータリテラシの課題を含むファイルの漢字コードは、最初 は、EUC-JP になっている。そのファイルをcat コマンドで表示しても、文字化 けする。
$ cat literacy-a2.txt
<表示省略。文字化け>
$
このファイルを lv コマンドで表示すると、きちんと表示される。
$ lv literacy-a2.txt
<表示省略。正しく表示>
<終了するにはqキーを押す>
:q
$
=」
キー使うと、判定結果を表示することができる。
$ 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 のこの機能を利用してみなさい。
$ man ascii
nkf は、cat コマンドで表示すると文字化けするようなファイルを、端末で表 示する時に使う事ができる。たとえば、コンピュータリテラシの課題を含むファ イルの漢字コードは、最初は、EUC-JP になっている。そのファイルをcat コマ ンドで表示しても、文字化けする。
$ cat literacy-a2.txt
このような場合、nkf に -w オプションをつけて実行することで、文字コード
を UTF-8 に変換して表示する事で、文字化けを解消できることがある。
$ nkf -w literacy-a2.txt
このことを確認しなさい。
$ cat ファイル名
$ nkf -w ファイル名
nkf では、-w を含めて次のようなオプションがよく使われる。
--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)
$
$ date
$ cal
$ date
$ cal
(クリックで拡大)
詳しくは、練習問題 電子メールのテキストの観察 を見なさい。
bcコマンドで obase, ibase を設定することで、基数変換を行いなさい。 The Unix Super Text 56.1.7節 参照。man bc 参照。
$ ruby -e 'printf("%x\n",100)'
64
$
%x は、16進数。%d は、10進数。%o は、8進数。
$ gdb
(gdb) p/x 100
$1 = 0x64
(gdb) quit
$
cp ~yas/public_html/htdocs/coins/literacy-2016/2016-05-06/literacy-a5.txt .注意: このコピーは、1度だけ行うこと。2度以上行うと、それまでに行った編 集内容は失われる。
$ ls
(literacy-a5.txtが存在することを確認する)
$ emacs literacy-a5.txt
作成したファイルを、 レポート提出ページから提出しなさい。