1バイト文字と2バイト文字について

このエントリーをはてなブックマークに追加
1ひよこ名無しさん
1バイトというのはコンピュータのデータ量の基礎単位であり、
1バイト=8ビット=2進数8桁のことであります。
1バイト=8ビット=2^8=256種の状態を表すことができ、
英文であれば、アルファベット・数字・記号など必要な文字はほぼサポートできます。
しかし、漢字を用いる日本語など文字数が256種におさまらない言語においては
1文字に対して2バイトの割り当てを行います。
これにより1文字65536種、これならどんな文字でも表すことができるでしょう。

ふと疑問に思ったのですが、
1バイト文字・2バイト文字の混合した文書において、
これらはどのように区別されているのでしょう?

例えば、仮に1バイト文字の最後の文字を「z」、2バイト文字の最後の文字を「終」とします。

      順番       16進数表記   2進数表記
z     256文字目      FF      11111111
終   65536文字目     FFFF     1111111111111111

そして、
zz                FF・FF     11111111・11111111

この「終」と「zz」のように、1バイト文字2つと、2バイト文字1つのそれぞれで
同じ状態になるところがあるんですが、1バイト文字・2バイト文字の混じった文書においては
どのようにして区別しているんでしょうか?
2ひよこ名無しさん:04/09/03 13:40 ID:???
>>1
2ちゃんではそういう単発質問は禁止されてます。

質問する前に必ず読んでください。
▽簡単な質問は【くだらねぇ質問はここに書き込め!!】スレッドへ。
3ひよこ名無しさん:04/09/03 13:44 ID:ct6kKNSH
自分なりに考えてみたいくつかの答え

1.区別してない
日本語OSでは半角文字もすべて2バイト。
半角っぽく見せてるだけ。

互換性等の問題から明らかに違います。
それに1バイト文字一つのテキストを作ってプロパティを見るとちゃんと1バイトです。

2.タグのようなものを用いる
HTMLのタグのように「ここから2バイト」のような区切りがある。
<2byte></2byte>の間にはさまれた部分だけ2バイト文字。

同じく、テキストで「aあ」とだけ書いてプロパティを確認したところ、
きっちり3バイトで、タグ分の容量などは入ってませんでした。

3.1ビットは拡張子。実は1バイト文字=128種、2バイト文字=32768種
例えば2進数表記で、初めに「0」なら、後ろ7ビットで文字を決定、
初めに「1」なら、後ろ15ビットで文字を決定、のようにしている。

最終文字は
      2進数表記
z     01111111
終  1111111111111111
zz  01111111・01111111
   01111111・11111111 →さらに後ろの8ビットを参照し、「F+(全角文字)」


128文字で足りるかなぁ・・・?
4ひよこ名無しさん:04/09/03 13:47 ID:ct6kKNSH
>>2
すいません、行ってきます。

長文なんですが、ここへのリンク貼るのと、
再掲するのはどっちがいいでしょう?
5ひよこ名無しさん:04/09/03 13:53 ID:???
>>4
面倒くさいからいいや。
シフトJISの仕組み
http://www.infonet.co.jp/ueyama/ip/binary/shiftjis.html
6ひよこ名無しさん:04/09/03 13:55 ID:ct6kKNSH
>>5
どうもありがとうございます。
単発スレ立て失礼しました。以後気をつけます。

答え3ですか。128種でもバリバリ余ってるんですね……
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ