⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qmn.cpp

📁 dsp浮点数转化为定点数的方法
💻 CPP
字号:
/*dsp浮点数转化为定点数的算法*/
/*格式是Qm.n,或叫做Sn.m*/
#include <math.h>
#include <stdio.h>

#define M 3      /*m.n中m的大小,表示符号位*/
#define N 12     /*m.n中的n大小,需乘以该指数2的次方*/
#define Type 0   /*正数为0,负数为1*/
#define L  (M+N+1)/4  /*最后十六进制位数*/
int main ()
{

	float a;       /*需要变换的数*/
	int result[N+M],i,j;  /*result存储二进制结果*/
	int x;              /*整数结果*/
	int coffi[N+M];       /*以2为底的阶数*/
	int sixresult[N+M+1];   /*16位二进制结果*/
	int sixteen[L];       /*最后的十六进制结果*/
	char sixteenc[L];     /*符号化最后结果*/
	double b;

    printf("输入您想转化的浮点数:");
	scanf("%f",&a);	

	b=a*pow(2,N);  /*化为整数*/
	printf("%2f\n",b);     
	x=(int)b;             /*取整*/
	printf("\n得到整数结果为:%d\n",x);   

	for(i=0;i<M+N;i++)         /*求阶数*/
	{
		result[i]=0;
		coffi[i]=(int)pow(2,i);
		printf("%d  ",coffi[i]);		
	}

	for(i=0;i<M+N;i++)      /*求m+n位二进制结果*/
	{
		if((x-coffi[M+N-i-1])>=0)
		{
			result[i]=1;
			x=x-coffi[M+N-i-1];
		}		 
		else
			result[i]=0;		
	}
    printf("\n除符号位外的二进制结果:");
	for(i=0;i<M+N;i++)
		printf("%d",result[i]);

    for(i=0;i<M+N+1;i++)     /*将符号位考虑进结果*/
	{
		if(i==0)
			sixresult[i]=Type;
		else
			sixresult[i]=result[i-1];
	}
	printf("\n考虑符号位结果:");
	for(i=0;i<M+N+1;i++)
		printf("%d ",sixresult[i]);

	for(i=0;i<L;i++)      /*求得十六进制结果*/
	{
		sixteen[i]=0;
		for(j=0;j<(M+N+1)/4;j++)
		{			
			sixteen[i]+=sixresult[i*4+j]*(int)pow(2,(3-j));
		}
	}
		printf("\n十六进制结果,未化成符号形式");
	for(i=0;i<L;i++)
		printf("%d  ",sixteen[i]);
    
	for(i=0;i<L;i++)   /*符号化结果*/
	{
		if(sixteen[i]<=9)
			sixteenc[i]=sixteen[i]+48;
		else
			switch(sixteen[i])
		{
			case 10: sixteenc[i]='a'; break;
			case 11: sixteenc[i]='b'; break;
			case 12: sixteenc[i]='c'; break;
			case 13: sixteenc[i]='d'; break;
			case 14: sixteenc[i]='e'; break;
			case 15: sixteenc[i]='f'; break;
			default:printf("Wrong!");
		}
	}
	printf("\n符号化之后:");
	for(i=0;i<L;i++)
     printf("%c ",sixteenc[i]);

    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -