#include <stdio.h>
int main()
{
float QTV,PSB,QI;
int q,b,s,g,wc,WC,IC;
scanf("%d\n",&IC);
scanf("%d",&WC);
switch(IC)
{
case 0:
QI=1;
PSB=0;
break;
case 1:
QI=1;
PSB=16;
break;
case 10:
QI=2;
PSB=32;
break;
case 11:
QI=4;
PSB=64;
break;
case 100:
QI=8;
PSB=128;
break;
case 101:
QI=16;
PSB=256;
break;
case 110:
QI=32;
PSB=512;
break;
case 111:
QI=64;
PSB=1024;
break;
}
q=WC/1000;
b=WC/100-q*10;
s=WC/10-q*100-b*10;
g=WC%10;
wc=q*8+b*4+s*2+g;
QTV=PSB+(wc+0.5)*QI;
printf("%f",QTV);
}
QTV为量化值缩写
编码结果第1位代表量化值正负,1为正,0为负
2~4位为段落码即 IC
5~8位为段内加权码即WC,wc为加权后的十进制数值,