個別の情報の表現(文字、数、画像)に対して、ここでは一般的にビットでの表し方を考える。
以下では通信を意識して、表したいものをメッセージと呼ぶ。
| メッセージ | 符号 |
| A | 0 |
| B | 01 |
| C | 011 |
| メッセージ | 符号 |
| A | 0 |
| B | 10 |
| C | 110 |
ある証券取引所のシステムは、(売り)注文の取り消しをする場合に注文したときの価格と株数を指定して「Y円N株売りの注文」と指定する仕様(スペック,specification)となっていた。 この仕様の問題として考えられることをあげよ。
ある大学では学生証番号を「入学年の下1桁+学年の名前順の通番の3桁」で表していた。 例えば、2010年に入学した東大太郎は名前順で95番目だったので、0095というようにである。 この表現方法の問題として考えられることをあげよ。
「社会保険庁の5000万件年金記録未解決問題」を符号化の観点から考えた場合、何が問題と考えられるだろうか。
ハミング距離: 2つの2進符号で対応する桁の0と1が異なる数
11101と01011のハミング距離は3
| 1 | 1 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 異なる | 同じ | 異なる | 異なる | 同じ |
ハミング距離が1の2つの符号は1方の符号が1ビット変わるともう一つの符号になってしまうことがある。
ハミング距離が2の2つの符号は1方の符号が2ビット変わらないともう一つの符号にならない。
→ハミング距離を考える事で、2つの符号がエラーによるビットの反転にどれだけ強いか調べる事ができる。
→ハミング距離はエラー検出やエラー訂正(以下を参照)の基礎となっている。
グレイ符号: 隣接する符号間のハミング距離を常に1としたもの。
説明が変だったので直しました。 表しているものが連続的に変わった時にその符号が1ビットずつ変わって欲しい。 A=00,B=01,C=10,D=11だと、BからCに変わったときに、01の両方のビットが変化するので、変化する時間がずれると、00や11である瞬間が生じてしまう。 A=00,B=01,C=11,D=10だと、BからCに変わったときに、01は11に変わるので、そのような瞬間は生じない。
2ビットのグレイ符号(00→01→11→10)から3ビットのグレイ符号を作る方法: 2ビットのグレイ符号の各符号の先頭に0をつけた000→001→011→010に、先頭に1をつけた100→101→111→110を逆順につなげる。 000→001→011→010→110→111→101→100。同様に事を繰り返すと何ビットのグレイ符号でも作れる。
圧縮: 元よりすくない数のビットで表現すること
伸張: 圧縮したものを元に戻すこと
cbadccbbcacccdcbの符号化として以下のどれがよいか?
実際のFAXで使われているMHコードがどのようなものかを調べてみよ。
「1回の圧縮でデータが90%になるとする。するとn回圧縮するとデータの大きさは0.9nとなる。 十分大きなnに対して0.9n<1となるので、全てのデータは1ビットで表すことができる。」 この主張の間違いを指摘せよ。
ある人が「私は音楽は8曲のうちのどれかしか聴かないので曲は3ビットで区別できる。 ところが、他の曲を聴く人がいるせいで、もっとたくさんのビットを使って区別する必要が生じている。 従って、その余分のビットを表現するためにかかる費用はその人たちが支払うべきである。」 と主張したとする。この主張の誤りを指摘せよ。
エラー検出: 符号を表すビットがノイズなどにより変化してしまったことを検出すること。エラーを検出したら、そのデータは捨てたり、再度送ってもらうようにしたりする。
| データ | パリティ | データ+パリティ | 1ビットの誤りを入れたもの | 判定 |
| 1110 | 1 | 11101 | 11001 | 1が3ビットなのでエラー |
| 1100 | 0 | 11000 | 11001 | 1が3ビットなのでエラー |
エラー訂正: 符号の表すビットがノイズなどにより変化してしまったことを検出して、正しい符号に直すこと。
コンピュータや通信ではあらゆる場面でエラーが発生するのでエラー検出・エラー訂正 (ECC(error correction code)と呼ばれる)は多用されている。
iMacのメモリはECCがついているか? Mac Proのメモリはどうか?
ある会社のインターネット注文担当のAは「情報」に関して何も知らない。 要求を外注に伝えて後は全て外注任せにしていた。 ある日、外注先が「商品をビットで表現すればメモリが効率的に使えます。 現在扱っている商品は256品目ですので8ビットで表現するのがベストです。」と言ってきた。 「メモリ」とか「ビット」とかAにとってはチンプンカンプンである。 言われるままに「ベスト」の8ビットを選んだ。 ある日、扱う商品が1つ増えたので追加するように外注に言ったところ、 「それにはシステムの作り替えが必要ですので、X億円掛かります。」 と言われた。なぜそのようなことになってしまったのだろうか?
「2000年問題」について調べてみよ。 符号化の観点から考えた場合、これはどのような問題と考えられるか?
クラス会の場所を全員に連絡することになったが、できるだけ短いメッセージにして送りたい。 どのような表現が良いか、考えよ。 漢字(ひらがなを含む)は16ビット、アルファベットは8ビット、数は桁数に応じたビット数とする。 候補地はたくさんあるとする。 ビット列の解釈方法はあらかじめ知らせておくものとする。