DPU MATCH S10Q6 数值转换为float类型

  • Post author:
  • Post category:其他


使用DPU计算双目视差图时,输出结果数据元素格式为 S10Q6(1bit符号位 + 9bit整数位 + 6bit小数位),需要将数据转换为float类型。

此数为定点数Q6,符号位 0表示数值为正, 1则表示数值为负。

计算规则:去除符号位后转换为整数,再除以2的6次方,再乘以正负符号

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

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

参考链接:

嵌入式DSP开发的定点数和浮点数

4.1.2.2 定点数到浮点数



版权声明:本文为weixin_42428854原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。