水城珠洲のページ

ファイルの内部的構造と文字コードの解説

§8 ファイルの内部的構造と文字コードの解説


ファイルの大まかな構造は前に書きましたが、ここではテキストファイル に少々突っ込んだ解説をします。ファイルの作成方法も見直しておきましょう(§5を参照)。テキストファイルは文字コード(ASCIIコードとSHIFT -JISコード)で構成されていますが、後一つ必ずあるものがあります。それが、EOFコード(ASCIIでは1AH(16進数の数字))。ファイルがこ こでお仕舞ですよという意味です。一部のエディタやVIEWも未だにこれで判定しているものがあります。ファイルが数字で構成されている事は前にも書きま した、(と思うけどなぁ)。ここで、今一度説明します。たとえば、以下の場合。

This is test file for COPY and TYPE.[ret][EOF]
↓ファイルが何バイト目かを16進数で表示する(16バイトごとで現す)
↓    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
+0000 54 68 69 73 20 69 73 20 74 65 73 74 20 66 69 6C
+0010 65 20 66 6F 72 20 43 4F 50 59 20 61 6E 64 20 54
+0020 59 50 45 2E 0A 0D 1A

等となりますが・・・数字をだけを見て全てを理解できますか?できたらあなたはニュータイプ(NEW TYPE)です。これを確認する場合は

A:\>DUMP TEST.TXT

を実行してみてください(動作の保証はしません)。多少のまちがいはあるかも知れません。ま、これは機械語をやる人が理解すれば良い事で一般人が知る必 要はありません。が、数字で成り立っていると言う事と「おまけ8」の16進数基礎知識は理解しておきましょう。漢字に付いてはかなり特殊です。が、日本語 の漢字の数が原因です。それこそ、星の数ほどある漢字をたかだか00H~0FFH(10進数で0~255)の256文字でかつ、英数字や記号を含んだ状態 で表示しようと言う方が無理というものです。昔は特殊な場合、「月火水木金土年円時分秒百千万π大中小」と罫線の表示を可能にしたシステムがありますが (MSXシリーズ)、そのようなかなり特殊なシステムは別とすると半角の漢字は通常表示不可です。全角の文字は如何(いか)にして表示しているのでしょう か?実は、旧システムで罫線や平仮名があった部分を使用して2バイト使って表示します。このことから、昔は2バイト文字などとも呼びました。いまはだれも が全角文字と読んでいます。2バイト使用すると0000Hから0FFFFH(10進で0~65535)の65536文字が採用でき一般的に使用する日本語 などはこれで十分です。が、実際に採用できる文字数は半角の英数字記号によってかなり制限されています。漢字は大きく分けてJIS第一水準とJIS第二水 準に分けられ、第一水準がしごく普通に使用する文字、第二水準がごくたまに使用する文字です。現在使われているのは新JISとよばれ1983年に決められ たものがベースでそれに1990年に二文字ほど加えたものが主流となっていますこれはJIS90と呼ばれます。古いものは旧JISと呼ばれ現在の漢字の コードは一部違うものですので、主流のシステム上ではある程度の誤差が出てしまいます。とまぁ、JISコードについてだらだらと書きましたが新JISや JIS90を使用している限りあまり気になる事ではないでしょう。ともあれファイルの中にはこのようにごちゃごちゃした内容が数字によってかかれていると 言う事を覚えておいてください。


おまけ  8
今回も実習は抜きです(あれでなにをやれと?)。16進数についての解説です。16進数はコンピュータの内部的な電気情報を現すのにもっとも適した数字 です。何故かは知りませんが、8本の電気信号を1バイトと称しこのため1バイトは8ビットと言います。電気信号の1本が1ビットな訳です。電気信号にはデ ジタルという方式が採用されていて、これは電気が流れていれば1。でなければ0というあっさりしたものです。1の場合は立っているなどとも言います。で、 1と0で構成された数字を2進数と言います。これももっと人間に理解し易くされたのが8進数。4ビット(インテルの4004CPUがこれ。知っている人は 知っているが知らない人はまったく知らない。世界初のCPUです)の時代はこれで良かったのですが8ビット(インテル8080。ザイログZ80。などな ど)になると足りなくなり16進数というものが採用されるようになりました。16進数は1から0までの数字に加えAからFの英文字を採用しています。なぜ 英文字か? 作ったのが英語圏の人だからでしょう(解答になってない・・・(;_;))。対応表をいかに記します。

16進数  10進数 8進数 2進数
     0      0    0   00000
     1      1    1   00001
     2      2    2   00010
     3      3    3   00011
     4      4    4   00100
     5      5    5   00101
     6      6    6   00110
     7      7    7   00111
     8      8   10   01000
     9      9   11   01001
     A     10   12   01010
     B     11   13   01011
     C     12   14   01100
     D     13   15   01101
     E     14   16   01110
     F     15   17   01111
    10     16   20   10000

変換方法などは普通は知らなくても困らないけど電子のみなさんは知ってないと泣きますね。テストにでるぞ(前期にやってたみたいだから)。コンピュータ の世界に10進数を持ち込む事ほど悲惨な事あまりないので、16進数は覚えておきましょう。DOSだけを使っているうちならまだいいけどね。M80 (Z80のアセンブラ)と言うアセンブラだと8進数を採用していたりもします。MASM(80×86のアセンブラ)でも対応してたかな?

こんてんつめぬー

こんてんつめぬー

  • facebook
  • twitter
PAGETOP
Copyright © Suzu Minashiro All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.