如何将 Q 格式整数转换为浮点数(反之亦然)?

2024-05-24

我四处搜寻,找不到一个很好的问题来回答这个问题:

给定一个整数,使用Q Format https://en.wikipedia.org/wiki/Q_(number_format),如何将该数字转换为普通浮点类型?

反之亦然:如何将浮点类型转换为Q Format https://en.wikipedia.org/wiki/Q_(number_format)整数?

例如,Q2 整数5应该1.25浮点数和浮点数1.25应该是整数5以 Q2 格式。


下面是一个通用的C++解决方案:

template<class IntegerType>
float qToFloat(IntegerType q, int fractional_bits)
{
    return ((float) q) * std::pow(2, -fractional_bits);
}

template<class IntegerType>
IntegerType floatToQ(float q, int fractional_bits)
{
    return (int) (q * std::pow(2, fractional_bits));
}

用法示例:

qToFloat<uint16_t>(5, 2);     //1.25
floatToQ<uint16_t>(1.25f, 2); //5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Q 格式整数转换为浮点数(反之亦然)? 的相关文章

随机推荐