数据的存储(浮点型)

news2025/1/8 4:28:04

目录

浮点型存储的规则


1.前面我们已经学过了整形在数据中的存储是以原码,反码,补码的形式在内存中存储的,那么浮点数是以什么样的形式存储的呢?

接下来我们通过一段代码来观察——>

        

int main()
{
	int n = 9;
	float* p = (float*)&n;//强制类型转换为float*
	printf("%d\n", n);//直接打印n
	printf("%d\n", *p);//通过指针解引用来打印
	*p = 9.0;
	printf("%d\n", n);
	printf("%f\n", *p);
	return 0;
}

   我们将这段代码放在vs中运行得到以下的结果:

   

 从这里我们不难看出浮点型在内存存储肯定与整形在内存的存储不一样,如果都是以原码,反码,补码的形式存储,他们打印的结果应该是9 9.000000 9 9.000000

所以接下来让我们来深度分析浮点数在内存中存储的情况:>

        首先根据国际标准(IEEE754)规定的,任意一个浮点数在内存中二进制的存储公式为:>

        f  = (-1)^S*M*2^E

        其中(-1)^S表示符号位,M表示有效数字,它的范围是:M>=1&&M<2,

        2^E表示指数位

       就比如说:

 通过上面的我们大概知道如何将一个浮点型的数的二进制如何算出来了,只有能够把浮点数的二进制算出来我们才可以弄懂浮点数在内存中存储的位数

也就是说对于32位的浮点数即float型的变量来说它是 给1个比特位来存储S,这里也不是很难理解因为S的大小也就是1或者是0,而给了8个比特位来存放E的值,又因为我们默认E的值是无符号的,所以实际在内存中存储的时候我们还要给E加上127,然后剩下的M我们用23个比特位来存储M的值。

对于64位的小数我们不相同,它的存储模型为:>

它的位数的分配:S(1bit) E(11bit) M (52bit) ,所以浮点数用来存放小数的时候范围更加精确,因为它又52个比特位用来存放有效数字

对于S来说它与单精度的存储模型没有什么区别,当对于E来说却有区别,在我们计算出来E的之后,实际上内存中存储的是E的值然后在加上1023。

这个E相当于中间数,用来确保我们E的值是无符号的。

接下来我们来讲3种情况下

1:当E的不全为0或者不全为1的时候

我们就可以使用上面的规则来算出浮点数在内存中的存储,然后在求出对应的值。

2:当E全为0的时候,我们知道实际上E的值应该是-127,这个时候我们将M的值前面一个有效位数字改为0,就是0.xxxxxx然后当我们使用公式来算的时候 E^-127,且M的值还为0.xxxxxx,所以它是一个非常小的数字,接近于0

3:当E的值全为1的时候,实际上E的值为128,所以是一个很大的数字接近于无穷大。

补充一下:实际上我们的M存放了24个有效数字,以为前面的一位要么是0或1。

有了以上知识我们就可以来解决我们一开始提出的问题了,并且解释为啥会出现那样的原因。

                         本章完,谢谢大家的观看,让我们一起进步把!

     

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

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

相关文章

String AOP的使用

面向切面编程&#xff0c;面向特定方法编程&#xff0c;以方法为对象&#xff0c;在不修改原方法的基础上&#xff0c;对方法进行操作扩展等&#xff0c;底层是通过动态代理实现的 使用开发步骤&#xff1a; 1、创建一个类&#xff0c;加上Aspect声明为一个AOP切面类&#xff…

2023 重新开始

感觉搞 IT 的日子最近都有点不太好过。 早上接到公司电话说今天是一个大日子。 为什么是大日子&#xff0c;相信所有人都是懂的。这次公司将会经历一次非常大的裁员&#xff0c;很不幸也在列表中。不过感觉这个好像也没有什么关系。 因为早就在意料之中的事情&#xff0c;经历…

c语言之结构体(初阶)

目录 1&#xff1a;结构体类型的声明 2&#xff1a;结构体初始化 3&#xff1a;结构体成员访问 4&#xff1a;结构体传参 1&#xff1a;结构体类型的声明 1&#xff1a;为啥要有结构体&#xff0c;因为当我们描述一个复杂对象的时候&#xff0c;可能平时我们的一个类型不能…

常见的五种排序

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下…

批量提取某音视频文案(二)

牙叔教程 简单易懂 之前写过一篇 批量提取某音视频文案 , 在之前的教程中, 我用的是微软的语音转文字功能, 今天我们换个方法, 使用 逗哥配音 的 文案提取 功能 准备工作 下载视频和音频 我在github找到的是这个仓库 https://github.com/Johnserf-Seed/TikTokDownload 注意一…

VLANIF虚接口案例实践

1&#xff09;拓扑 2&#xff09;需求&#xff1a; -所有PC能够ping通自己的网关 -实现vlan间互通&#xff0c;实现所有的PC互通 3&#xff09;配置步骤&#xff1a; 第一步&#xff1a;给pc配置IP地址 第二步&#xff1a;交换机创建vlan,做access和trunk -所有的交换机都配…

传统图形学对nerf的对比与应用落地

作者今年参加了China3DV的盛会&#xff0c;大会的发表、线下讨论、学者、工业界等等的交流着实对于Nerf有了更深的思考&#xff0c;以下是作者的抛砖引玉&#xff0c;如有不当之处敬请指出~ 传统图形学与nerf的简介&#xff1a; 传统图形学&#xff1a;显示表达几何表达方式&…

【CloudCompare教程】010:点云的裁剪功能(分段、裁剪、筛选)

本文讲解CloudCompare点云的裁剪功能(分段、裁剪、筛选)。 文章目录 一、点云的分段二、点云的裁剪三、点云的筛选一、点云的分段 加载案例点云数据,如下图所示: 选中图层点云,点击工具栏中的【分割】工具。 点击【激活线状选择】工具: 在需要裁剪的点云上绘制现状裁剪范…

使用免费的SSL证书将nginx配置的普通网站修改为HTTPS网站

一、需求说明 已经在Centos8系统中使用nginx搭建了网站;但是该网站没有实现HTTPS协议不安全;现需要将网站升级为HTTPS站点。 Linux环境对Nginx开源版源码下载、编译、安装、开机自启https://blog.csdn.net/xiaochenXIHUA/article/details/130265983?spm=1001.2014.3001.5501

chatgpt赋能python:Python交易接口简介

Python交易接口简介 Python作为一种高级编程语言&#xff0c;被广泛用于各种不同的领域&#xff0c;其中包括金融市场交易。Python交易接口提供了一种优雅而简单的方式&#xff0c;使得交易者能够方便地执行自己的交易策略。 什么是Python交易接口&#xff1f; Python交易接…

Effective第三版 中英 | 第2章 创建和销毁对象 | 考虑静态工厂方法而不是构造函数

文章目录 Effective第三版第2章 创建和销毁对象前言考虑静态工厂方法而不是构造函数 Effective第三版 第2章 创建和销毁对象 前言 大家好&#xff0c;这里是 Rocky 编程日记 &#xff0c;喜欢后端架构及中间件源码&#xff0c;目前正在阅读 effective-java 书籍。同时也把自己…

基于SSM的人才招聘网站

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

模拟实现库函数:strcpy

目录 通过cplusplus网站了解函数功能&#xff1a; 断言assert的使用&#xff1a; 关于const&#xff1a; 本篇你最应该了解的内容&#xff1a; 通过cplusplus网站了解函数功能&#xff1a; 要模拟实现库函数&#xff0c;首先我们需要了解这个函数的参数&#xff0c;函数的…

主机加固介绍

最近公司做服务器安全&#xff0c;开始在市场了解产品&#xff0c;对这一块算是短暂的研究了一段时间&#xff0c;有一点心得给大家分享一下。 主机加固 最近主机加固的概念被炒得火热&#xff0c;主机加固的功能也正在被致力于服务器安全的相关人士所关注。 那么究竟什么是主…

【CVPR2022】CSWin Transformer详解

【CVPR2022】CSWin Transformer详解 0. 引言1. 网络结构2. 创新点2.1 Cross-Shaped Window Self-Attention2.2 Locally-Enhanced Positional Encoding(LePE) 3. 实验总结 0. 引言 Transformer设计中一个具有挑战性的问题是&#xff0c;全局自注意力的计算成本非常高&#xff0…

chatgpt赋能python:Python代码怎么敲:了解Python编程语言

Python代码怎么敲&#xff1a;了解Python编程语言 Python是一种高级编程语言&#xff0c;具有易读易用和高效性等优点。这使得Python成为了程序员的最佳选择&#xff0c;并成为了广泛应用于机器学习、Web开发、数据分析等领域。 Python代码敲法&#xff1a;小技巧 Python代码…

chatgpt赋能python:Python主要语句介绍

Python主要语句介绍 Python是一种广泛使用的高级编程语言&#xff0c;其语法简介、易于学习&#xff0c;并有丰富的库和工具支持。在Python中&#xff0c;主要的语句可以帮助开发人员快速编写代码&#xff0c;实现各种各样的任务。在本文中&#xff0c;我们将介绍Python中的主…

性能优化之高Log file sync等待实战案例分享

故障情况 AWR报告如下&#xff1a; 之后他们把大部分业务停掉后&#xff0c;Log file sync等待事件还是非常高。 通过对比昨天跟今天相同时间的AWR&#xff0c;在业务量小非常多的情况&#xff0c;等待时间还是高非常大。 诊断过程 log file sync等待事件首先判断当前系统IO…

“微商城”项目(1环境搭建)

开发工具分享&#xff1a; 百度网盘&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1lSsCjf-_zx1ymu6uZeG26Q?pwdhuan 提取码&#xff1a;huan 一、环境搭建说明 本项目服务端环境要求为 Windows Apache PHP MySQL。 下面介绍如何搭建环境&#xff0c;部署服…

CW32系列模数转换器(ADC)

模数转换器&#xff08;ADC&#xff09;的主要功能是将模拟量转换为数字量&#xff0c;方便MCU进行处理。下面以CW32L083为例介绍CW系列的模数转换器的特点和功能&#xff0c;并提供演示实例。 一、概述 CW32L083 内部集成一个 12 位精度、最高 1M SPS 转换速度的逐次逼近型模…