香农编码

来源:百度知道 编辑:UC知道 时间:2024/05/22 02:16:00
(1)输入:信源符号个数 、信源的概率分布 ;
(2)输出:每一个信源符号对应的香农编码码字(就是二进制)
方法步骤:将概率由大到小排序,算累加概率P1=0,Pi=P(S1)+P(S2)+、、、、+P(Si-1),Li是大于等于mi 的最小整数,将Pi变成二进制

#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
static TCHAR szAppNume[]=TEXT("HelloWin");
HWND hWnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppNume;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("This program requires Windows NT!"),szAppNume,MB_ICONERROR);

return 0;
}

hWnd = CreateWindow(szAppNume, //window class name
TEXT("