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

news2025/7/21 1:41:10

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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/368649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法第十六期——动态规划(DP)之线性DP

【概述】 线性动态规划&#xff0c;是较常见的一类动态规划问题&#xff0c;其是在线性结构上进行状态转移&#xff0c;这类问题不像背包问题、区间DP等有固定的模板。 线性动态规划的目标函数为特定变量的线性函数&#xff0c;约束是这些变量的线性不等式或等式&#xff0c;目…

Mysql中关于查询日志的配置详解

查询日志 MySQL中的查询日志保存在文本文件中&#xff0c;能够记录MySQL中的所有数据操作。 开启查询日志 MySQL默认情况下没有开启查询日志&#xff0c;如果需要开启查询日志&#xff0c;则需要在 my.cnf 文件或者 my.ini 文件的 [mysqld] 选项下进行配置。例如&#xff0c;…

GoFrame工程目录设计介绍

GoFrame框架针对业务项目的目录设计&#xff0c;主体的思想来源于三层架构&#xff0c;但在具体实现中&#xff0c;对其进行了一定的改进和细化使其更符合工程实践和时代进步。 一.工程目录结构 GoFrame业务项目基本目录结构如下&#xff1a; 二.目录结构解释 对外接口 对…

浅谈智能电力运维管理系统在物业小区的应用分析

安科瑞 李亚俊 0引言 由于部分住宅小区存在电力设施纸质档案破损缺失、产权分界不清、查找故障点所在箱变&#xff08;箱式变电站&#xff0c;下同&#xff09;位置困难或小区出入口路径不明等情况&#xff0c;影响了抢修效率。为此&#xff0c;国网辽宁沈阳市沈北新区供电公…

IDEA Maven install Failed to execute goal org.apache.maven.plugins异常处理

目录一、异常错误二、原因三、解决方法修改pom.xml资源配置文件一、异常错误 由于服务器编译拦截了静态资源&#xff0c;导致出现异常&#xff0c;需要重新打包编译 打开IDEA带的Maven管理&#xff0c;双击clean清除由项目编译创建的target 再双击install安装jar包到本地仓库…

朴素贝叶斯笔记

贝叶斯公式在A 条件成立下&#xff0c;B的概率等于B的概率*在B条件成立下&#xff0c;A的概率/A的概率&#xff0c;推导假设一个学校中男生占总数的60%&#xff0c;女生占总数的40%。并且男生总是穿长裤&#xff0c;女生则一半穿长裤、一半穿裙子。1.正向概率。随机选取一个学生…

白盒测试方法的简单理解(通俗易懂)

白盒测试主要使用逻辑覆盖测试方法&#xff0c;包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖等。 假设逻辑判断流程图如下图所示&#xff0c;我们简单来说说每种白盒测试方法是如何来进行的。 一、语句覆盖 语句覆盖的定义是&#xff1a;程序中…

Openwrt中动态IPV6 防火墙的正确设置方法

环境&#xff1a;光猫桥接公网IPV6 问题&#xff1a;动态IPV6地址不知道怎么设置防火墙 解决办法&#xff1a;模糊匹配前缀&#xff0c;特定后缀 背景&#xff1a;将家中光猫桥接后&#xff0c;获得了公网的IPV6地址&#xff0c;可以从外部用IPV6访问家中的设备&#xff0c;但I…

vue-cli引入wangEditor、Element,封装可上传附件的富文本编辑器组件(附源代码直接应用,菜单可调整)

关于Element安装引入&#xff0c;请参考我的另一篇文章&#xff1a;vue-cli引入Element Plus&#xff08;element-ui&#xff09;&#xff0c;修改主题变量&#xff0c;定义全局样式_shawxlee的博客-CSDN博客_chalk variables 1、安装wangeditor npm i wangeditor --savewangE…

日常编程中和日期相关的代码和bug

本文主要是Java中和日期时间相隔的几个常用代码函数代码&#xff0c;做了总结&#xff0c;希望在日常编码中&#xff0c;可以帮到大家。 1.计算闰年 记住一个短语&#xff0c;“四年一润&#xff0c;百年不闰&#xff0c;四百再润”&#xff0c;不管换啥语言&#xff0c;相信…

HyperGBM用Adversarial Validation解决数据漂移问题

本文作者&#xff1a;杨健&#xff0c;九章云极 DataCanvas 主任架构师 数据漂移问题近年在机器学习领域来越来越得到关注&#xff0c;成为机器学习模型在实际投产中面对的一个主要挑战。当数据的分布随着时间推移逐渐发生变化&#xff0c;需要预测的数据和用于训练的数据分布…

剑指 Offer 30. 包含min函数的栈

摘要 剑指 Offer 30. 包含min函数的栈 一、栈解析 package Stock;import java.util.Stack;/*** Classname JZ30min函数栈* Description TODO* Date 2023/2/24 18:59* Created by xjl*/ public class JZ30min函数栈 {/*** description 最小栈的含义是每次从栈中获取的数据都是…

AWS攻略——使用中转网关(Transit Gateway)连接不同区域(Region)VPC

文章目录Peering方案Transit Gateway方案环境准备创建Transit Gateway Peering Connection接受邀请修改中转网关路由修改被邀请方中转网关路由修改邀请方中转网关路由测试修改Public子网路由知识点参考资料区别于 《AWS攻略——使用中转网关(Transit Gateway)连接同区域(Region…

深入理解Spring Boot的自动配置

通过spring boot可以很方便的独立运行spring应用程序&#xff0c;因为spring boot内嵌了Tomcat、Jetty等servlet容器&#xff0c;切提供自动配置功能&#xff0c;无需进行XML配置即可自动运行应用程序。那么Spring boot启动过程中具体进行了哪些操作呢&#xff1f;下面是Spring…

Julia 数学函数

Julia 提供了一套高效、可移植的标准数学函数。 数值比较 下表列出了用于数值比较的函数&#xff1a; 函数测试是否满足如下性质isequal(x, y)x 与 y 值与类型是否完全相同isfinite(x)x 是否是有限大的数字isinf(x)x 是否是&#xff08;正/负&#xff09;无穷大isnan(x)x 是否…

项目重构,从零开始搭建一套新的后台管理系统

背景 应公司发展需求&#xff0c;我决定重构公司的后台管理系统&#xff0c;从提出需求建议到现在的实施&#xff0c;期间花了将近半个月的时间&#xff0c;决定把这些都记录下来。 之前的后台管理系统实在是为了实现功能而实现的&#xff0c;没有考虑到后期的扩展性&#xf…

SpringMVC常见面试题(2023最新)

目录前言1.简单介绍下你对springMVC的理解?2.说一说SpringMVC的重要组件及其作用3.SpringMVC的工作原理或流程4.SpringMVC的优点5.SpringMVC常用注解6.SpringMVC和struts2的区别7.怎么实现SpringMVC拦截器8.SpringMvc的控制器是不是单例模式&#xff1f;如果是&#xff0c;有什…

关基系统三月重保安全监测怎么做?ScanV提供纯干货!

三月重保当前&#xff0c;以政府、大型国企央企、能源、金融等重要行业和领域为代表的关键信息基础设施运营单位都将迎来“网络安全大考”。 对重要关基系统进行安全风险监测并收敛暴露面&#xff0c;响应监管要求进行安全加固&#xff0c;重保期间实时安全监测与数据汇报等具体…

js函数声明方式*2,对象声明方式*7,不同的调用

目录 一、两种函数声明方式 二、七种对象声明方式 一、两种函数声明方式 【1】命名函数 形如&#xff1a; function fu1(){ let firstName 111111111 let lastName 2222222 console.log(firstName ,lastName ) } function fu2(firstName&#xff0c;lastName ){ …

Linux 线程优先级

目录标题概述Linux进程调度的三种策略Linux 线程优先级对于实时任务对于普通任务top中的PR和NI其他说明代码示例设置为实时进程优先级测试代码概述 概述内容 常见的运用场景&#xff1a; 1&#xff1a;2;3; Linux进程调度的三种策略 SCHED_OTHER&#xff0c;分时调度策略&#…