首页 > 系统相关 >浮点数在内存中的存储

浮点数在内存中的存储

时间:2024-03-19 20:00:10浏览次数:20  
标签:存储 反码 浮点数 补码 内存 原码

在了解浮点数在内存中的存储之前,我们先了解一下整数在内存中的存储。

整数就是直接以二进制的形式存储且存的都是补码,其有正负数之分,整数的原码、反码、补码相同,负数则是原码按位取反得反码,反码+1=补码,如果是负数,其最高位为1(其从原码到补码得过程中符号位不参与运算),如果是正数,最高位为0。如2在内存中就是00000000000000000000000000000010,-2就是原码就是10000000000000000000000000000010,反码就是11111111111111111111111111111101,补码就是11111111111111111111111111111110。整数如此,那么浮点数呢?我们可以通过代码进行验证。

很显然,其与我们得猜测并不同,因此,我们推测浮点数在内存中的存储与整形的不同。通过查阅资料我们可知,浮点数在内存中的存储是根据 IEEE 754标准来规定的。

第二段中说其规定了四种浮点数的存储方式,这里我们只讨论前两种(单精度和双精度)。

根据标准规定,任何一个浮点数都可以表示为这样的形式:

            ​​​​​​​        

对于32位的单精度浮点数,最高的一位为符号位S,接着8位是指数E,剩下的23位是有效数字M。

对于64位的双精度浮点数,最高的一位为S,接着11位是指数E,剩下的52位是有效数字M。

指数E:E为无符号数,E为8位(取值范围为0~255),如果为11位(取值范围为0~2047)。因为科学技术法中的E是可以出现负数的,因此在存入内存中时,E的真实值必须加上一个中间数,对于8位的E中间数为127,对于11位的,中间数为1023。

有效位M:因1<=M<2,也就是说M为1.xxxxxx的形式,其中xxxxx为小数部分,因为M第一位总为1,因此可以舍去,等读取时,再把第一位加上去,目的是节省1位有效数字。

如图所示,浮点数在内存中的存储便是如此。

最后,我们就来分析最开始的题目。

到此,我们对浮点数在内存中的存储有了一定的了解。

标签:存储,反码,浮点数,补码,内存,原码
From: https://blog.csdn.net/friendhan2005/article/details/136762384

相关文章

  • 云存储系统的构成
    原文链接:https://answer.baidu.com/answer/land?params=ySNqY0HWoA4cK43GwScAIBUWbFlVAqDrZB05TtzSYR0d5QwcZGfOEU9t8MCuqPdk7wb9nRRb43GtGuc6KnxMDVikHPIPspwi450mrJ2Ab%2Bq2lLllaWdOXxtvMms9RZpx3MvJV3%2FWPfwvtDAqXz9RB2VPxXggJK29Nb4rbKweLr2Jtx%2FnJz5UbCUBMn6K3UnvLZT5yoDV......
  • C语言 数据在内存中的存储
    目录前言一、整数在内存中的存储二、大小端字节序和字节序判断2.1.练习一2.2练习二2.3练习三2.4练习四2.5练习五2.6练习六三、浮点数在内存中的存储3.1 浮点数存的过程3.2浮点数取的过程总结前言数据在内存中根据数据类型有不同的存储方式,今天我们......
  • 用 Visual Studio 调试器中查看内存中图像
    返回目录:OpenCV系列文章目录(持续更新中......)前一篇:OpenCV4.9.0在windows系统下的安装后一篇:OpenCV-Java开发简介  ​警告本教程可以包含过时的信息。ImageWatch是MicrosoftVisualStudio的插件,可用于在调试应用程序时可视化内存中的图像(例如 cv::Mat 或 IplIma......
  • C语言-整数与浮点数:内存存储的差异
    整数与浮点数在内存中的存储机制在计算机科学中,整数和浮点数是我们经常处理的两种数据类型。它们在内存中的存储方式决定了它们可以表示的范围、精度以及如何进行数学运算。了解这些基本概念对于理解计算机如何处理这些数据以及优化相关代码至关重要。整数在内存中的存储整......
  • 操作系统内存管理笔记
    单级页表分页储存页表页表中的页表项是连续存放的,因此页号可以是隐含的,不需要占用空间页表中的块号所记录的只是内存块号,而非内存块的起始地址案例一假设某系统物理内存大小为4GB,页面大小为4KB,则每个页表项至少应该为多少字节解答:由题目可知,内存块大小=页......
  • 简单了解内存管理
    虚拟内存操作系统需要管理的就是各个进程的内存,对于进程,需要存储代码、堆、栈等信息,如果让程序员直接来操控物理内存管理进程的话,难度会更大,需要考虑进程在哪个位置分配、会不会冲突等问题,那么操作系统提供了虚拟内存给程序员使用,背后的实现这些脏活累活都交给操作系统去完成......
  • pinia在登录页面持久化存储
    安装pinianpminstallpinia创建一个store/index.jsimport{createPinia}from'pinia'//从pinia模块导入createPinia函数。Pinia是Vue.js的一个状态管理库,createPinia函数用于创建一个新的Pinia实例importpiniaPluginPersistfrom'pinia-plugin-persist'//pinia-plug......
  • mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
    时间:2018-03-2617:58:45一、首先说下本篇博客所实现功能的背景和功能是怎样的:   背景:因为公司项目开始迁移新平台项目,所以以前的平台老数据以及订单信息需要拆分表,而且需要业务逻辑来分析以前的订单表,来拆分成另外的几个新表,包括增加新的流水分析,以及更新其他用户或者......
  • Mysql带返回值与不带返回值的2种存储过程
    时间:2018-03-3000:25:57过程1:带返回值:dropprocedureifexistsproc_addNum;createprocedureproc_addNum(inxint,inyint,outsumint)BEGINSETsum=x+y;end然后,执行过程,out输出返回值:callproc_addNum(2,3,@sum);select@sum;过程2:不带返回值:dropp......
  • .NET 内存碎片化分析
    一:背景1.讲故事上个月有位朋友wx找到我,说他的程序存在内存泄漏问题,寻求如何解决?如下图所示:从截图中可以看出,这位朋友对windbg的操作还是有些熟悉的,可能缺乏一定的实操经验,所以用了几个命令之后就不知道怎么排查下去了。既然找到我,那就以我的个人经验在他的dump上继续分析......