gpt4 book ai didi

c - 如何将此数字表示形式转换为 float ?

转载 作者:行者123 更新时间:2023-12-01 23:20:47 24 4
gpt4 key购买 nike

我从温度传感器(类型 MCP9808)读取这个 16 位值

忽略前三个 MSB,将其他位转换为 float 的简单方法是什么?我设法将值 2^7 到 2^0 转换为具有一些位移的整数:

uint16_t rawBits = readSensor();
int16_t value = (rawBits << 3) / 128;

但是我想不出一个简单的方法来包含指数小于 0 的位,除了手动检查它们是否已设置然后添加 1/2、1/4、1/8 和 1/16 分别到结果。

最佳答案

这样的事情看起来很合理。取数字部分,除以 16,并固定符号。

float tempSensor(uint16_t value) {
bool negative = (value & 0x1000);
return (negative ? -1 : 1) * (value & 0x0FFF) / 16.0f;
}

关于c - 如何将此数字表示形式转换为 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68117185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com