k阶指数哥伦布编码实例

void k_exp_golobm_binariztion(int k, int number)
{
    while (1)
    {
        if (number >= (1 << k))
        { 
            cout << 1;
            number -= 1 << k;
            k++;
        }
        else{
            cout << 0;
            while (k--)
            {
                cout << ((number >> k) & 0x01);
            }
            break;
        }
    }

    cout << endl;
}

分组为:
2k,2k+1,2k+2,...

等比数列前n项和:
sn=a1(1qn)1q

所以k阶指数哥伦布编码的第n项前缀解码为:
a1=2k,q=2,j01,0

pref(an)=2k(12j)12=2k(2j1)

比如k=1时的哥伦布编码:

k:1
i:0  00         
i:1  01       
i:2  1000
i:3  1001
i:4  1010
i:5  1011
i:6  110000
i:7  110001
i:8  110010
i:9  110011
i:10 110100
i:11 110101
i:12 110110
i:13 110111
i:14 11100000
i:15 11100001
i:16 11100010
i:17 11100011
i:18 11100100
i:19 11100101
i:20 11100110
i:21 11100111
i:22 11101000
i:23 11101001
i:24 11101010
i:25 11101011
i:26 11101100
i:27 11101101
i:28 11101110
i:29 11101111

110000 前缀解码过程为:

pref(a6)=21(221)=23=6

后缀的比特数为 k+j

an=pref(an)+suff(an)

比如:
a23=21(231)+9=14+9=23

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值