資料シート
数の表現
[0..1) の実数
http://www.infonet.co.jp/apt/March/syllabus/bookshelf/number/unitary.html
範囲[0..1)に属する実数(=0以上1未満の実数)はビット列を符号としてかなり正確に(つまり近似的に)表現することができる。
符号として使うビット列の桁数は短くても長くてもかまわないが、あらかじめ決めておく必要はある。長いビット列を使った方が、記録/通信での負荷は増えるけれど、より正確に(=違う数が区別できるように)表現することができるようになる。
符号化/復号のためのいろいろな符号系が使われているが、最も基本的なのは段階的等分法という手順に基づいた符号系だ。
4桁の符号(=××××、×××○、...○○○○。16種類)で0.6を表わす符号を作ってみよう。
0.6が属する範囲は[0..1) |
[0..1)のちょうど中央は0.5 |
0.6は0.5より大きい |
左端の桁は○ |
0.6が属する範囲は[0.5..1) |
[0.5..1)のちょうど中央は0.75 |
0.6は0.75より小さい |
その右隣りの桁は× |
0.6が属する範囲は[0.5..0.75) |
[0.5..0.75)のちょうど中央は0.625 |
0.6は0.625より小さい |
その右隣りの桁は× |
0.6が属する範囲は[0.5..0.625) |
[0.5..0.625)のちょうど中央は0.565 |
0.6は0.5625より大きい |
その右隣りの桁は○ |
これらをまとめて、0.6の符号は○××○と決める。
すぐ分るように、この方法では、範囲[0.5625...0.625)の数はどれも同じ符号○××○で表されることになる。ほかの符号も、同じように一定の幅(=1/2ビット列の桁数)の範囲の数のすべてにとって共通の符号になっている。だから、復号する場合はその範囲のどの数に復号するのがいいのか分からない。実際には範囲の左端(=最小値)を選ぶことが多い。4桁のビット列を使っていると、最悪の場合は1/24(=0.0625)の誤差が生じることになる。
しかし、範囲[0...1)には無限に多くの実数が属しているのに対して、符号として使えるビット列は4桁として24(=16)種類しかないので、これは仕方がない。それに、もっと正確に表現したいのなら、いくらでもそれに応じて桁数の大きいビット列を使うことができるので困らない。実際には8〜32桁ぐらいのビット列が使われ、それで十分に役に立っている。
メディアテクノロジー論
Copyleft(C) 2005, by Studio-ID(ISIHARA WATARU). All rights reserved.
最新更新
05-08-12