首页 > 解决方案 > 如何将浮点数转换为 fix16_14?

问题描述

如何将浮点数转换为fix16_14C中的定点格式。fix16_14表示 2 位整数和 14 位小数?考虑一个例子:-0.99633 = c03c in hex(二进制补码表示)。请帮我解决这个 C 代码逻辑。

标签: cembedded

解决方案


转换是通过乘以float16384.0 来完成的。一定要对结果进行四舍五入。此外,由于只有 2 个整数位,因此该数字必须在范围内-2 <= x < 2。否则计算会溢出。

这是示例代码:

#include <stdio.h>
#include <inttypes.h>
#include <math.h>

int main(void)
{
    float x = -0.99633;
    short int y = round(x * 16384.0);
    printf("%#04hx\n", (unsigned short)y);
}

代码的输出是:0xc03c


推荐阅读