質問にやさしく親切に答えてくれるスレ
■ このスレッドは過去ログ倉庫に格納されています
0876デフォルトの名無しさん
2006/01/23(月) 00:13:26サイトを見る限りでは、変換してビット数を減らしているだけだと思うけど。
aaaaaaabbbccdefgは、a〜gまでのパターンがあるから、7パターン出てくるので
3bit(二進数で000-111まで)で表すことができる。だから、そのままこの
パターンを表すには、3bit * 17文字で51bit使えば表せる。
でも、全ての文字を表すのに3bit使うのではなく、良く出てくる文字を
小さいbit数で表すことにすれば、その文字が多く出てくれば
それだけ効率よくデータを表せる。
上の表を使うと、aを1bit(0)で表し、bを2bit(10)で表す・・としていくと
aの繰り返しは7回出てくるので、1bit * 7で7bit使えば表現でき、
bは 2bit * 3で6bit使えば表現できる。全ての文字についてまとめると、
1×7+2×3+3×2+5×1+5×1+5×1+6×1+6×1=46 bit
これはそのまま1文字に3bit使うよりは、効率がいい。
通常は、一番よく出てくるパターンを小さいビットに割り当て、
0bitが'a'であることを表す対応表を作り、復元する。
ってことだと思うよ。
■ このスレッドは過去ログ倉庫に格納されています