DPU MATCH S10Q6 数值转换为float类型

DPU MATCH S10Q6 数值转换为float类型,第1张

使用DPU计算双目视差图时,输出结果数据元素格式为 S10Q6(1bit符号位 + 9bit整数位 + 6bit小数位),需要将数据转换为float类型。
此数为定点数Q6,符号位 0表示数值为正, 1则表示数值为负。
计算规则:去除符号位后转换为整数,再除以2的6次方,再乘以正负符号

#include 
#include 
using namespace  std;
int main()
{
    int x = 0b1011001010011001;
    int j = 0b1000000000000000;
    int k = 0b0111111111111111;
    bitset<16> b0(x);
    std::cout << b0 << endl; // 输出二进制

    int a = x & j;  // 0表示数值为正, l则表示数值为负
    int b = a > 0 ? -1 : 1;
    int c = x & k;
    float d = c / pow(2, 6);
    float e = d * b;
    std::cout << "e: " << e << std::endl;
}

参考链接:嵌入式DSP开发的定点数和浮点数 4.1.2.2 定点数到浮点数

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/713540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-24
下一篇 2022-04-24

发表评论

登录后才能评论

评论列表(0条)

保存