?? a-13encode.cpp
字號:
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
void main(){
int i,j,k,err,p,a,d,m0,m1,m2,m3;
cout<<"請輸入一個-2048-2048的電平值"<<endl;
cin>>i;
j=abs(i);
if(j>2048) //判斷電平值是否合法
{ cout<<"您的輸入有誤"<<endl; //輸入有錯終止程序
return;
}
{if(i>0) m0=1;
else m0=0; //判斷正負電荷
if(j>=0,j<16) m1=0,m2=0,m3=0;
else if(j>=16,j<32) m1=0,m2=0,m3=1;
else if(j>=32,j<64) m1=0,m2=1,m3=0;
else if(j>=64,j<128) m1=0,m2=1,m3=1;
else if(j>=128,j<256) m1=1,m2=0,m3=0;
else if(j>=256,j<512) m1=1,m2=0,m3=1;
else if(j>=512,j<1024) m1=1,m2=1,m3=0;
else if(j>=1024,j<2048) m1=1,m2=1,m3=1;
} //判斷電平范圍確定段落碼
p=m3+2*m2+4*m1; //計算出段落碼的10進制數
if (p!=0)
{
d=pow(2,p-1); //計算出量化間隔
a=16*d; //計算段落起始電平
}
else d=1,a=0; //量化序號為1時的特殊情況
k=(i-a)/d; //段內碼的10進制數
err=(i-a)%d; //計算量化誤差
int b,c[4];
for(int f=3;f>=0;f--)
{ b=k%2;
k=k/2;
c[f]=b; //段內碼轉化為2進制逆序形式
}
cout<<"量化間隔:"<<d<<endl;
cout<<"起始電平:"<<a<<endl;
cout<<"量化誤差:"<<err<<endl;
cout<<"編碼字為:"<<m0<<m1<<m2<<m3; //段落碼
for(int e=0;e<=3;e++) cout<<c[e]; //段內碼的正確表示
cout<<"\n";
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -