Golomb 编码 具体算法 求

Golomb 编码 具体算法 求高手指点
b = 2m
q = INT((x - 1)/b)
r = x - qb - 1
则 x 可以被编码为两部分,第一部分是由 q 个 1 加 1 个 0 组成,第二部分为 m 位二进制数,其值为 r。我们将 m = 0, 1, 2, 3 时的 Golomb 编码表列出:
值 x m = 0 m = 1 m = 2 m = 3
-------------------------
1 0 0 0 0 00 0 000
2 10 0 1 0 01 0 001
3 110 10 0 0 10 0 010
4 1110 10 1 0 11 0 011
5 11110 110 0 10 00 0 100
6 111110 110 1 10 01 0 101
7 1111110 1110 0 10 10 0 110
8 11111110 1110 1 10 11 0 111
9 111111110 11110 0 110 00 10 000

我按照上述所说的方法算出来的结果和此表不太一样 求高手 帮忙解决 不知道是他给出的表格或者狮子不对还是我太笨

------解决方案--------------------
m=0时,b=2*m=0, q = int((x-1)/0) = ?

下面是我算得x=1..9, m = 1,2,3的情况:

Python code
>>> def golomb(x, m):
...     b = 2*m
...     q = int((x-1.0)/b)
...     r = x - q*b - 1
...     l = bin(r)[2:]
...     return '1'*q+'0' + ':' + '0'*(m-len(l))+l
>>> print "\n".join(str(x)+"  "+" ".join(golomb(x, i) for i in range(1, 4)) for x in range(1, 10))
1  0:0 0:00 0:000
2  0:1 0:01 0:001
3  10:0 0:10 0:010
4  10:1 0:11 0:011
5  110:0 10:00 0:100
6  110:1 10:01 0:101
7  1110:0 10:10 10:000
8  1110:1 10:11 10:001
9  11110:0 110:00 10:010