float浮点/double双精度浮点和二进制的相互转换,小白也能看明白!

news2024/11/29 22:41:26

二进制文件包含了太多的数据,如何看懂二进制文件,决定于基础。

文章目录

  • 前言
    • 1、重点知识
      • 1.1何为二进制文件
      • 1.2浮点和双精度的浮点如何生成二进制
        • 1.2.1 float和double的基础知识
        • 1.2.2 IEEE754约束的重点
        • 1.2.3 浮点是如何表示二进制
      • 1.3 例子说明
    • 双精度double的转换方式一样,可以参考float的说明。


前言

`提示:无规矩不成方圆,我们先看一下IEEE754对float和double的约束,点击查看

1、重点知识

1.1何为二进制文件

二进制文件,故名思意就是进制为2的文件。

1.2浮点和双精度的浮点如何生成二进制

在没有统一之前,各个公司对其的操作方式不一,导致系统间的耦合性非常低。那么自然需要形成一个统一的局面。IEEE 754自然应运而生,形成了一套约束方案。

1.2.1 float和double的基础知识

名称字节长度对应位数
float4字节32位
double8字节64位

1.2.2 IEEE754约束的重点

名称符号位Sign长度Expont指数Fraction小数长度位元长度e
float1需计算需计算8
double1需计算需计算11

这里先说明一下:指数偏移值(exponent bias),即浮点数表示法中指数域的编码值,等于指数的实际值加上某个固定的值。e为存储指数的位元的长度。

1.2.3 浮点是如何表示二进制

在这里插入图片描述

1.3 例子说明

-------------------------------
这里是伪代码,只做逻辑上面的说明!
-------------------------------
1、将float 类型的3.14转换成二进制,该如何思考?
/**
首先将3.14拆解成3和0.14两个部分。
整数部分3对应的二进制:0011
小数部分0.14该如何转换成二进制呢?计算的时候为什么要乘以2取整数作为二进制的数呢?下面我们看一个说明:
0.14里面有多少个0.5  0.14/0.5=0.14*2=0.28 结果是0个
0.14里面有多少个0.25  0.14/0.25=0.14*4=0.56 结果是0个
0.14里面有多少个0.125 0.14/0.125=0.14*8=1.12 结果是1个,此时满2进1了。
(0.14-0.125)里面有多少个0.0625  0.015/0.0625=0.015*16=0.24  结果为0
以此类推~,知识变换了一种方式,整数部分除以2,小数部分乘以2
我们类比一下十进制的数:100.1 整数部分有10个10(100/10),小数点0.1有1个十分之一
我的理解:计算机没有特定存储小数,只是变化了一种方式。
**/

在这里插入图片描述

通过1.2.3的介绍,我们整合的结果为:11.0010001111010111000011 ,将其转化成指数形式:1.1.0010001111010111000011*2^1
在IEEE中规范,在二进制,第一个有效数字必定是“1”,因此这个“1”并不会存储。

符号位sign:正数为0,负数为1 此题的符号位为:0
Exponent:指数位1,但实际值=指数值加上固定偏移值2^(位元长度8-1)-1=127,十进制数位127+1=128,其二进制结果位:10000000
Fraction长度(32-1(符号位长度)-8(位元长度)-exp因子数):22
eg:这里说明一下整数3的二进制为11占用了两位,32位-位元长度8-符号位长度-整数部分占用的位数,则为22位!

最后我们整合为:浮点3.14的二进制结果为:0 10000000 10010001111010111000011 ,
方便阅读,从右到左每4位进行组合:0100 0000 0100 1000 1111 0101 1100 0011
转化成十六进制则为:0x4048f5C3

双精度double的转换方式一样,可以参考float的说明。

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

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

相关文章

The Open Graph protocol(开放图谱协议)的介绍及应用

介绍 Open Graph 协议使任何网页都可以成为社交中的丰富对象。例如,用于 Facebook 以允许任何网页具有与 Facebook 上任何其他对象相同的功能。 以下是把链接分享到钉钉,钉钉识别后显示的效果: 基本元数据 要将网页变成图形对象&#xff0…

【如何在三个月时间里,从零基础小白变身为专业的数据分析师?】

如何在三个月时间里,从零基础小白变身为专业的数据分析师? 随着数字经济、大数据时代的发展,数据已然成为当下时代最重要的盈利资源,让企业在做决策和计划方案时更有针对性和依据,能提前预测市场发展方向,做…

【C++学习】异常

🐱作者:一只大喵咪1201 🐱专栏:《C学习》 🔥格言:你只管努力,剩下的交给时间! 异常 🥮异常🍢自定义异常体系🍢C标准库的异常体系🍢异…

Linux 开机过程

参考链接 Linux引导过程 Linux 系统的运行级别 Linux 系统总共有设置了 7 种运行级别。分别是: 0 级:关机;1 级:单用户模式;2 级:无网络的多用户模式;3 级:多用户模式&#xff0…

EasyDSS调用录像回看接口出现报错“请先合成mp4”,是什么原因?

EasyDSS支持一站式的上传、转码、直播、回放、嵌入、分享功能,具有多屏播放、自由组合、接口丰富等特点。平台可以为用户提供专业、稳定的直播推流、转码、分发和播放服务,全面满足超低延迟、超高画质、超大并发访问量的要求。 有用户反馈,在…

内网搭建 SFTP 服务器

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#xff0…

Spring Security 6.x 系列【44】微服务篇之统一身份认证实现方案

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 单体架构2. 微服务架构2.1 概述2.2 统一身份认证3. 认证方式3.1 JWT3.2 …

【TI毫米波雷达笔记】IWR6843AOPEVM-G+DCA1000EVM的mmWave Studio数据读取、配置及避坑

【TI毫米波雷达笔记】IWR6843AOPEVM-GDCA1000EVM的mmWave Studio数据读取、配置及避坑 硬件方面连接好以后 就可以打开mmWave Studio了 配置 如果硬件配置成功 则可以通过mmWave Studio的Output看到配置信息 按照如图步骤 在radar api里面一步步来操作 其中 RS232选择波特率…

细节有惊喜!详解Web自动化框架UI自动截图与画面回放实现!

目录 前言: Web自动化测试框架基本结构及原理 UI自动截图实现方法 基于Selenium截图实现UI自动截图的过程如下: 基于Selenium截图的代码实现如下: 基于爬虫截图实现UI自动截图的流程如下: 基于爬虫截图的代码实现如下&#…

springboot+vue4S店车辆管理系统(java项目源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的4S店车辆管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风…

【评测】真我Realme GT Neo5手机性能评测

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 目录 购买记录 鲁大师评测 安兔兔评测 个人使用感受 优点 几个明显的体验感不好的点 大图、多图预警! 配置说明: 运行内存:12GB存储容量:256GB充电功率&#…

4.spring总结

文章目录 一、spring总结1、Spring三级缓存解决什么问题?2、Spring支持的几种bean的作用域?3、pring bean是否是线程安全?4、*Spring框架中bean的生命周期*?5、哪些是重要的bean生命周期方法?你能重载它们吗&#xff1…

《微服务实战》 第二十三章 Redis RDB AOF

前言 Redis 提供了两种持久化机制:第一种是 RDB,又称快照(snapshot)模式,第二种是 AOF 日志,也就追加模式。 1、RDB RDB 即快照模式,它是 Redis 默认的数据持久化方式,它会将数据…

【Flutter 工程】004-代码生成:functional_widget

【Flutter 工程】004-代码生成:functional_widget 文章目录 【Flutter 工程】004-代码生成:functional_widget一、概述1、Flutter 开发痛点2、functional_widget 函数小部件3、主页 二、基本使用1、安装 functional_widget2、传统写法3、运行结果4、代码…

App Inventor 2 连接打印机(Printer),自定义打印的实现

本教程主要分享App Inventor 2连接网络打印机进行自定义打印的思路及方法,这里只进行思路的讲解及关键步骤的效果演示,细节需自行完善。主要用到社交应用组件中的信息分享器组件。 打印App示意图 连接打印机教程(难度系数:★★&a…

值得尝试的Voyager Linux,没有Snap,出色的定制

一直以来我都不喜欢 Ubuntu GNOME 的默认外观,而且对Ubuntu强制使用Snap应用不是很喜欢,之前我用的是Ubuntu MATE这个发行版,直到我听说了Voyager Linux。今天特意安装试用了一下Voyager Linux 23.04,有几点功能我很喜欢&#xff…

适用于 Windows 电脑的 6 款最佳视频转换器

视频转换器可以帮助您转换和播放设备上不受支持的视频格式。减小视频文件大小、以通用格式组织所有视频或与他人共享文件以在不同设备上播放也很方便。 Windows 有很多视频转换器可供选择。有些是免费的,有些则提供适合专业用户的高级功能。在本指南中,…

Java程序设计入门教程--Java语言概述

目录 1.1 Java语言诞生与发展 1.2 Java语言的特点 1.3 运行机制与虚拟机 1.1 Java语言诞生与发展 Java语言的诞生最早可以追溯至1991年,那时称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境,其最初目的只是为了开发一种独…

完美解决接口测试难题,数据驱动带签名混合封装框架实现

目录 前言: 一、框架概述 二、框架架构 三、代码实现 四、实战步骤 五、总结 前言: 接口自动化测试是保障软件质量的重要手段之一,其自动化程度越高,越能有效提高软件测试效率。而接口自动化测试中,接口测试框架…

推荐 6 款还不错的文档协作工具~

你们团队是否正在寻找便捷丰富功能的文档协作软件? 文件协作软件帮助你和你的团队更有效地工作,并进行实时协作,为创新创造更多的空间。 但是,今天有数百种文档协作工具,你应该选择哪一种呢? 为了帮助你…