输入的是待编码的语法元素的值value和指数哥伦布编码的阶数order。
输出的是编码的二进制值
#include<iostream>
using namespace std;
int main()
{
int value;
int order;
int bins;
int xWriteEpExGolomb( int uiSymbol, int uiCount );
cout<<"输入待编码的值value:"<<endl;
cin>>value;
cout<<"输入待编码的阶数的值order:"<<endl;
cin>>order;
bins=xWriteEpExGolomb(value,order);
cout<<"bins="<<bins<<endl;
return 0;
}
int xWriteEpExGolomb( int uiSymbol, int uiCount )
{
int bins = 0;
int numBins = 0;
while( uiSymbol >= (int)(1<<uiCount) )
{
bins = 2 * bins + 1;
numBins++;
uiSymbol -= 1 << uiCount;
uiCount ++;
}
bins = 2 * bins + 0;
numBins++;
bins = (bins << uiCount) | uiSymbol;
numBins += uiCount;
return bins;
}
运行结果: