Float32与Float16转换
生活随笔
收集整理的這篇文章主要介紹了
Float32与Float16转换
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
參考https://stackoverflow.com/questions/3026441/float32-to-float16
#include <cstdio>
#include <cstdint>
using namespace std;
using float16_t = uint16_t;
struct Float16
{
float16_t _value;
Float16(float16_t value)
{
_value = value;
}
Float16(float value)
{
uint32_t m = *(uint32_t *)&value;
_value = ((m & 0x7fffffff) >> 13) - (0x38000000 >> 13);
_value |= ((m & 0x80000000) >> 16);
}
operator float16_t ()
{
return _value;
}
operator float ()
{
uint32_t m = _value;
m = ((m & 0x7fff) << 13) + 0x38000000;
m |= ((_value & 0x8000) << 16);
return *(float *)&m;
}
};
總結(jié)
以上是生活随笔為你收集整理的Float32与Float16转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 获得汉字字符个数
- 下一篇: mybatis的Date类型。