小さい整数ほど頻繁に現れるときの簡略符号化。 予測誤差の符号化に便利。
| 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
int n = 1; // 個数のカウンタ
int a = 0; // 予測誤差の絶対値の和
while (予測誤差 e を読む) {
for (k = 0; (n << k) < a; k++);
m = (e >= 0) ? 2*e : -2*e-1;
(m >> k) ビットの 0 を出力;
1 ビットの 1 を出力;
m の最後の k ビットを出力;
a += abs(e);
if (++n >= 64) {
a /= 2; n /= 2;
}
}
例(k=0)
| 誤差 | 出力 |
|---|---|
| 0 | 1 |
| -1 | 01 |
| 1 | 001 |
| -2 | 0001 |
| 2 | 00001 |
| -3 | 000001 |
| 3 | 0000001 |
例(k=1)
| 誤差 | 出力 |
|---|---|
| 0 | 10 |
| -1 | 11 |
| 1 | 010 |
| -2 | 011 |
| 2 | 0010 |
| -3 | 0011 |
| 3 | 00010 |
Solomon W. Golomb はペントミノの考案者でもある。
Optimal Golomb Rulers(最適ゴロム定規/最短ゴロム定規)
| 1 | 3 | 5 | 2 | |||||||
Last modified: 2004-12-17 22:58:21