fp32/fp64精度,4/8字节16进制转float/double十进制

2023-05-16

1、IEEE-754 32位单精度浮点数(4字节)

1.1 32位单精度浮点数

在这里插入图片描述
其中, 32位16进制数包括1位符号位(SIGN),8位指数位(EXPONENT)和
23位尾数位(MANTISSA)。
例如:
25.3可以表示为41CA6666(0x41为高字节)
在这里插入图片描述

1.2 单精度转换程序(右高字节)

将四字节16进制的数据转换为float数据:

#include<iostream>
using namespace std;
typedef unsigned char uint8_t;
typedef uint8_t u8;
float DATA_Trans(u8 Data_1,u8 Data_2,u8 Data_3,u8 Data_4)
{
	long long transition_32;
	float tmp=0;
	int sign=0;
	int exponent=0;
	float mantissa=0;
	transition_32 = 0;
	transition_32 |=  Data_4<<24;   
	transition_32 |=  Data_3<<16; 
	transition_32 |=  Data_2<<8;
	transition_32 |=  Data_1;
	sign = (transition_32 & 0x80000000) ? -1 : 1;//符号位
	//先右移操作,再按位与计算,出来结果是30到23位对应的e
	exponent = ((transition_32 >> 23) & 0xff) - 127;
	//0111 1111 1111   1111 1111 1111 1111 1111
	//将22~0转化为10进制,得到对应的x系数 
	mantissa = 1 + ((float)(transition_32 & 0x7fffff) / 0x7fffff);
	tmp=sign * mantissa * pow(2, exponent);
	return tmp;
}
int main()
{
	float num= DATA_Trans(0x44, 0x8B, 0xA4, 0x41);
	//double num2= DATA_Trans_2(0xa4, 0x70, 0x3d, 0x0a, 0xd7, 0x43, 0x40, 0x40);
	//printf("%lf\n",num2);
    printf("%f\n",num);
	return 0;
}

2、IEEE-754 64位双精度浮点数(8字节)

2.1 64位单精度浮点数

在这里插入图片描述
其中, 64位16进制数包括1位符号位(SIGN),11位指数位(EXPONENT)和
52位尾数位(MANTISSA)。
例如:
25.3可以表示为40394CCCCCCCCCCD(0x40为高字节)
在这里插入图片描述

2.2 双精度转换程序(右高字节)

将八字节16进制的数据转换为double数据:

double DATA_Trans_2(u8 Data_1,u8 Data_2,u8 Data_3,u8 Data_4,u8 Data_5,u8 Data_6,u8 Data_7,u8 Data_8)
{
	long long transition_32;
	double tmp=0;
	int sign=0;
	float exponent=0;//11位指数位
	double mantissa=0;//52位尾数位
	transition_32 = 0;
	transition_32 |=  (uint64_t)Data_8<<56;   
	transition_32 |=  (uint64_t)Data_7<<48; 
	transition_32 |=  (uint64_t)Data_6<<40;
	transition_32 |=  (uint64_t)Data_5<<32;
	transition_32 |=  (uint64_t)Data_4<<24;   
	transition_32 |=  (uint64_t)Data_3<<16; 
	transition_32 |=  (uint64_t)Data_2<<8;
	transition_32 |=  (uint64_t)Data_1;
	sign = (transition_32 & 0x8000000000000000) ? -1 : 1;//符号位
	//先右移操作,再按位与计算,出来结果是62到52位对应的e
	exponent = ((transition_32 >> 52) & 0x7ff) - 1023;
	//将51~0转化为10进制,得到对应的x系数 
	mantissa = 1 + ((double)(transition_32 & 0xfffffffffffff) / 0xfffffffffffff);
	tmp=sign * mantissa * pow(2, exponent);
	return tmp;
}
int main()
{
	//float num= DATA_Trans(0x44, 0x8B, 0xA4, 0x41);
	double num2= DATA_Trans_2(0xa4, 0x70, 0x3d, 0x0a, 0xd7, 0x43, 0x40, 0x40);
	printf("%lf\n",num2);
    //printf("%lf\n",num);
	return 0;
}

2、在线工具(采用左高字节)

https://tooltt.com/floatconverter/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

fp32/fp64精度,4/8字节16进制转float/double十进制 的相关文章

随机推荐

  • 英伟达NVIDIA Jetson系列产品刷机(SDK Manager)

    英伟达的TX NX AGX可以说是近几年边缘计算中非常牛的产品了 可Linux系统经常会出现安装某软件后系统环境崩掉的情况 xff0c 接着系统崩掉的机会 xff0c 记录一下Jetson AGX Xavier的刷机过程 准备 xff1a
  • seL4的编译和运行(OdroidXU3)

    seL4支持平台 seL4所在的git如下 xff1a https github com seL4 seL4 git 不过我们编译和运行seL4一般不只是用这个git xff0c 而是借助seL4test xff08 seL4的测试框架 x
  • 目标跟踪之Pysot系列代码训练(SiamRPN\SiamRPN++)

    代码地址 xff1a https github com STVIR pysot 环境配置参考博客 xff1a Siam系列跟踪算法工具包PySOT配置 一 数据集准备 Pysot系列跟踪器训练的时候 xff0c 首先将数据集进行裁剪 xff
  • 基于Paddle实现实例分割

    百度的Paddle这几年发展十分迅速 xff0c 而且文档十分齐全 xff0c 涉及到机器视觉的多个应用领域 xff0c 感觉还是非常牛的 xff0c 各种backbone xff0c 损失函数 数据增强手段以及NMS等 xff0c 整体感
  • 机器学习笔记: 时间序列 分解 STL

    1 前言 STL Seasonal and Trend decomposition using Loess 是以LOSS 作为平滑方式的时间序列分解 LOSS可以参考机器学习笔记 xff1a 局部加权回归 LOESS UQI LIUWJ的博
  • C++11 auto遍历

    C 43 43 11这次的更新带来了令很多C 43 43 程序员期待已久的for range循环 xff0c 每次看到javascript xff0c lua里的for range xff0c 心想要是C 43 43 能有多好 xff0c
  • C++ 文件的读写(fin && fout)

    如何让键盘输入字符保存在 txt文件中 如何让我们自己在键盘上输入的字符不仅仅在屏幕上显示 xff0c 而且还能保存在特定路径的文件中 xff0c 这让简单枯燥的控制台命令程序变得略有趣 首先 xff0c 先看看cin和cout对象 xff
  • 基本矩阵、本质矩阵和单应矩阵

    两幅视图存在两个关系 xff1a 第一种 xff0c 通过对极几何一幅图像上的点可以确定另外一幅图像上的一条直线 xff1b 另外一种 xff0c 通过上一种映射 xff0c 一幅图像上的点可以确定另外一幅图像上的一个点 xff0c 这个点
  • 矩阵零空间

    矩阵A的零空间就Ax 61 0的解的集合 零空间的求法 xff1a 对矩阵A进行消元求得主变量和自由变量 xff1b 给自由变量赋值得到特解 xff1b 对特解进行线性组合得到零空间 假设矩阵如下 xff1a 对矩阵A进行高斯消元得到上三角
  • VIO学习总结

    VIO xff08 visual inertial odometry xff09 即视觉惯性里程计 xff0c 有时也叫视觉惯性系统 xff08 VINS xff0c visual inertial system xff09 xff0c 是
  • 单应性(Homography)变换

    我们已经得到了像素坐标系和世界坐标系下的坐标映射关系 xff1a 其中 xff0c u v表示像素坐标系中的坐标 xff0c s表示尺度因子 xff0c fx fy u0 v0 xff08 由于制造误差产生的两个坐标轴偏斜参数 xff0c
  • senmantic slam mapping

    basicStructure hpp common h 定义一些常用的结构体 以及各种可能用到的头文件 xff0c 放在一起方便include 相机内参模型 增加了畸变参数 xff0c common headers h各种可能用到的头文件
  • Ubuntu 20.04 VNC 安装与设置

    原链接 VNC是一个远程桌面协议 按照本文的说明进行操作可以实现用VNC对Ubuntu 20 04进行远程控制 一般的VNC安装方式在主机没有插显示器的时候是无法使用的 下面的操作可以在主机有显示器和没有显示器时都能够正常工作 首先安装x1
  • opencv中类型转换问题

    记录一下最近困惑我的问题 方便以后查阅 在学习立体匹配算法中BM算法时 xff0c 出现在了关于类型转换的问题 xff1a disp convertTo disp8u CV 8U 255 numberOfDisparities 16 不知道
  • 最大似然估计MLE与贝叶斯估计

    最大似然估计 Maximum Likehood Estimation MLE 最大似然估计的核心思想是 xff1a 找到参数 的一个估计值 xff0c 使得当前样本出现的可能性最大 用当年博主老板的一句话来说就是 xff1a 谁大像谁 xf
  • 大疆Livox_mid 40雷达初体验

    为了解决无人车上镭神雷达FOV小而导致的车前3m内无法看到锥形桶问题 东家给公司邮寄了一台大疆的mid40雷达 不得不说 颜值真的高 光看颜值 就甩镭神几条街 昨天重新配置镭神的激光雷达 官方给的配置软件 真的是 用的我心碎啊 算了 不提了
  • 地铁供电系统的构成

    地铁供电系统一般划分为以下几部分 xff1a 外部电源 xff1b 主变电所 xff1b 牵引供电系统 xff1b 动力照明系统和杂散电流腐蚀防护系统 xff1b 电力监控系统 外部电源地铁供电系统的外部电源就是地铁供电系统主变电所供电的外
  • C++ Vector常用函数

    C 43 43 Vector常用函数 begin 函数 原型 xff1a iterator begin const iterator begin 功能 xff1a 返回一个当前vector容器中起始元素的迭代器 end 函数 原型 xff1
  • STM32使用ADC获取内部温度传感器数据输出(直接读取/DMA两种方式实现)

    STM32使用ADC获取内部温度传感器数据输出 xff08 直接读取 DMA两种方式实现 xff09 前言一 内部温度传感器的使用 xff1f 二 代码操作讲解1 直接读取2 DMA处理 总结 前言 STM32F1系列 xff08 本代码基
  • fp32/fp64精度,4/8字节16进制转float/double十进制

    1 IEEE 754 32位单精度浮点数 xff08 4字节 xff09 1 1 32位单精度浮点数 其中 xff0c 32位16进制数包括1位符号位 SIGN xff0c 8位指数位 EXPONENT 和 23位尾数位 MANTISSA