c - 如何将浮点数转换为 fix16_14?
问题描述
如何将浮点数转换为fix16_14
C中的定点格式。fix16_14
表示 2 位整数和 14 位小数?考虑一个例子:-0.99633 = c03c in hex(二进制补码表示)。请帮我解决这个 C 代码逻辑。
解决方案
转换是通过乘以float
16384.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
推荐阅读
- android - 使用 app:srcCompact(使用 VectorDrawable)在 API 级别 23 上的应用程序崩溃
- java - Java / Selenium 应用程序 - 如何获取被测应用程序的会话 ID?
- .htaccess - 使用 htaccess 在特定日期/时间重定向
- jenkins - Jenkins 从系统(Windows)加载系统环境变量
- javafx - 在不使用列表数据类型的情况下设置表视图值
- reactjs - 使用react build在react js中硬重新加载页面时找不到404
- grafana - Haproxy 导出器无法获取数据
- azure - 使用 Docker compose 时的 az container exec
- php - 会话注销后如何在laravel中重定向上一页?
- c# - c#快速截屏