float16格式解析
float16存储格式如下,C++并没有float16类型,所以一般都是使用uint16_t以二进制形式存储
二进制数据到float的转换公式如下
C++实现如下
float fp16ToFloat(uint16_t val) {
uint16_t sign = val >> 15;
uint16_t expo = (0b0111111111111111 & val) >> 10;
uint16_t frac = 0b0000001111111111 & val;
float fval = std::pow(-1, sign) * std::pow(2, expo - 15) * (1 + frac / 1024.0);
return fval;
}