🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## Fixed-Point Data Types定点数类型 > MSP设备的DSP库使用了IQmathLibry,Q15和IQ31具有相同的定点类型。Q15定点类型定义为 _q15 ,并以16位带符号整数存储。类似,IQ31类型被定义为_iq31,并以一个32位带符号整数存储。以下公式为定点数表示方法,可将存储在内存中的整数值与对应的Q15或IQ31数值进行转换。 :-: ![](https://img.kancloud.cn/11/87/1187a871b5cfe7b20a3de1bb08e98464_339x106.png) > Q15和IQ31都可以用来表示小数,它们的区别在于数据的分辨率。下表显示了这两种格式的属性以及几种标准数据类型。 > |类型 | 整数位|小数位|最小值|最大值|分辨率| :-: | --- | --- |--- |--- |--- |--- | |int16_t| 16| 0 |-32768|32767|1| | int32_t| 32|0 |-2147483648 |2147483648|1 | |_q15|1|15|-1.0|0.9999695|0.00003051758| |_iq31|1|31|-1.0|0.9999999995|0.00000000046| ***** ## 宏指令 > 为了帮助定点数的操作,DSP库定义了C宏定义,以便从十进制数快速转换到定点数。下面的示例展示了如何使用_Q15和_IQ31宏定义常量,并用于初始化复杂的数据样本。 ``` // Constant definition #define MY_CONST 0.0125 #define MY_CONST_Q15 _Q15(MY_CONST) #define MY_CONST_IQ31 _IQ31(MY_CONST) // Sample function void myFunction(_iq31 *cmplxData) { cmplxData[0] =_IQ31(0.0); cmplxData[1] = MY_CONST_IQ31; return; } ``` 有关可用宏函数的详细信息,请参阅支持api文档一节。