---
title: 自定义数据类型和范围
description: "HMPP的复数类型由两个基本数据类型的成员组成的结构体来描述，分别表示复数的实部和虚部。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/accel/kunpengaccel_hmpp_06_0018.html
sourcePath: /source/zh/kunpengboostkithistory/2200/accel/kunpengaccel_hmpp_06_0018.html
indexId: 0af426a7ff14b2f5e4d0addac9689365a11fdb7cedcc3fc3bd4eebabd0daabb375
---
# 自定义数据类型和范围

#### 复数类型

HMPP的复数类型由两个基本数据类型的成员组成的结构体来描述，分别表示复数的实部和虚部。

定义格式如下：
```
typedef struct {
<数据类型>
re;
<数据类型>
im;
} Hmpp
<类型>
c;
```


格式中的<类型>和<数据类型>的对应请参见标准库数据类型和范围。


HMPP中使用的复数类型定义在hmpp_typebase.h中，包括：Hmpp16sc、Hmpp16uc、Hmpp32sc、Hmpp32fc、Hmpp64sc、Hmpp64fc、Hmpp8sc。


#### Bool类型

以枚举形式定义（定义在hmpp_typebase.h中），如下：

```
typedef enum {
HMPP_FALSE = 0,
HMPP_TRUE = 1
} HmppBool;
```


#### 特殊数据类型

部分数据类型（如24s）不被HMPP库支持，可以通过HMPP中Convert函数转换成HMPP库支持的数据类型，以便后续处理。

对于24位有符号数据，每个向量元素由三个连续的8位无符号字符型（uint8_t）字节组成，以小端字节序的形式存储（向量元素的低8位存储在低地址中），并用高8位的第一位作为符号位。这些数据通过HMPP中Convert函数可以转换为32位有符号整型（32s）或32位浮点型（32f）。

表1为HMPP自定义数据范围。


**表1 HMPP自定义数据范围**

| 宏定义 | 最大值 | 说明 |
| --- | --- | --- |
| UINT24\_MAX | 16777215 | 未定义对应的数据类型，存储在uint32\_t类型变量中。 |
| INT24\_MAX | 8388607 | 未定义对应的数据类型，存储在int32\_t类型变量中。 |
| INT24\_MIN | \-8388608 | 未定义对应的数据类型，存储在int32\_t类型变量中。 |
