## 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文档一节。