C++ float 转 float16

std::uint16_t floatToFloat16(float value) {
    std::uint32_t floatBits;
    std::memcpy(&floatBits, &value, sizeof(float));     // 使用 memcpy 进行拷贝

    std::uint32_t sign = (floatBits >> 31) & 0x1;       // 提取符号位
    std::uint32_t exponent = (floatBits >> 23) & 0xff;  // 提取指数部分
    std::uint32_t mantissa = floatBits & 0x7fffff;      // 提取尾数部分

    std::uint16_t float16Bits = (sign << 15) | ((exponent - 127 + 15) << 10) | (mantissa >> 13);
    return float16Bits;
}

ChatGPT真是个好东西!

你可能感兴趣的:(C++,C++)