单精度浮点数存储格式理解
最近看浮点数产生了很多疑问,在网上找答案的时候发现,很多文章都只是告诉你浮点数是怎么样的,但是没有解答为什么要这样,于是自己思考写下自己的理解。
浮点数的二进制表示中,标准格式一般为
比如3.625转化为标准格式为:11.101
而存储到计算机中,不是使用的标准格式,而是使用存储格式。
为什么不是使用标准格式来作为存储格式?
设想一下,假如是使用标准格式来作为存储格式,是不是需要规范前几位为整数位,后几位为小数位。比如前8位作为整数位,那如果现在的数据内容整数位为0,如0.625……的话,就浪费了前八位的空间,这个浪费是以牺牲小数精度为代价。所以才有了存储格式这么个东西。
存储格式介绍
存储格式的规范如下,以单精度浮点数为例,总的长度为32位:
符号位 | 指数位 | 尾数位 |
1 | 8 | 23 |
符号位最简单,表示正负。
在介绍指数位之前,先了解尾数位:
尾数位实际上是还有一个隐藏位为1在尾数位的左侧。
如3.625的二进制格式:(1即是指数位)
(如果不能理解的话,可以将二进制转为10进制来理解:)
负指数也一样,如果是0.625,二进制格式为:(-1是指数位)
即将所有浮点数的标准格式转化为:,而1就是隐藏位,不会存储在数据中。这样的好处是,将更多的空间用来存放有效位置,像前边提到的0.4564545……这种很长的浮点数,可以更好的保留精度。
为什么隐藏位是1,而不是0?
不管隐藏位是1还是0,对于指数位是没有影响的,因为可存储的范围不会改变。
但是,用1却可以增加尾数的范围,将一个有效位隐藏,则可以空出多一位来存储后边的一位精度。但是这个时候就会发现,0怎么表示?其实,在浮点数中0是特殊处理的,当指数位全0,尾数位全0时,代表0 。
指数的转换
介绍完了尾数,介绍指数位,如0.625的指数位是-1,用二进制表示的话会需要占用一个符号位:10000001
但是放在存储格式中,实际上的二进制表达是需要给转换一下的,如果有了解过,应该都知道对于单精度浮点数而言,这个转换就是加上127 。
为什么是加127?
因为指数是有正负值的,所以,如果保留符号位的话,8位的指数位可表达范围是:-127~127
而如果给他加上127的偏移量,范围则变成0~254
而因为现在值全都大于等于0了,所以不需要符号位,范围变成:0~255
加了偏移量,可以增加指数的表示范围。
所以比如-1的指数二进制格式为:-1+127 = 126,二进制格式为:01111110
单精度浮点数存储格式理解相关推荐
- 32位单精度浮点数存储格式
32位单精度浮点数的存储格式: 其中s为符号位,占据1bit, f是由低23个bit组成的分数,最高位为0.5,然后是0.25,以此类推.e为2的指数幂,b为偏置(在32位单精度里b=127). 所以 ...
- c语言单精度浮点数规格化,对浮点数的一些理解
浮点数的范围和有效位 对于浮点数,其能表示的数值范围和其有效位如下 类型 比特位 数值范围 有效位 float 32 -3.410^38-+3.410^38 6~7位 double 64 -1.710 ...
- 单精度浮点数计算机存储的理解(IEEE 754)
浮点数剖析 以下是该标准对浮点数格式的描述. [编辑]本文表示比特的约定 把W个比特(bit)的数据,从内存地址低端到高端,以0到W−1编码.通常将内存地址低端的比特写在最右边,称作最低有效位(lea ...
- 单精度浮点数 float、双精度浮点数 double
3.3 浮点数表示法 内容导视: 小数对应的二进制 科学计数法 浮点数表示法 最大值.最小值 特殊值 3.3.1 小数对应的二进制 之前漏掉了小数对应的二进制,现补上. 二进制转十进制 从个位数开始向 ...
- 浮点数存储格式学习:找到非规格数中最大和最小的数
在学习<深入理解计算机系统>的浮点数存储里,我想到一个问题,单精度浮点数中,非规格浮点数最大数是几? 00000000011111111111111111111111 符号位:0 指数域: ...
- 什么是浮点型?什么是单精度浮点数(float)以及双精度浮点数(double)?
前言 作为一名java学习者,怎能不懂这些java基础中的基础呢?本文就带各位温顾温顾java浮点型.单精度浮点数.双精度浮点数. 浮点型 首先明确java中浮点型数据类型主要有:单精度float.双 ...
- 什么是java双精度浮点数_什么是浮点型?单精度浮点数(float)和双精度浮点数(double)介绍...
作为一名java学习者,怎能不懂这些java基础中的基础呢?本文就带各位温顾温顾java浮点型.单精度浮点数.双精度浮点数. 浮点型首先明确java中浮点型数据类型主要有:单精度float.双精度do ...
- App Inventor 四字节转单精度浮点数
如果您觉得本文对您有用,希望您点赞,收藏并且把它分享出去,不明白的可以在评论区留言,我会一一解答,感谢您的支持!! 可以访问https://app.wxbit.com/,展示里面搜索"四字节 ...
- 为什么单精度浮点数的精度是7位
文章目录 起因 浮点数的精度 IEEE754表示 测试 浮点数运算 浮点数精度 我的理解 自己的理解 总结 参考 起因 今天遇到一个问题,角色卡在一个模型边上,在PVD看模型也比较正常.最终原因呢是因 ...
最新文章
- 【机器学习基本理论】详解最大后验概率估计(MAP)的理解
- python基础知识选择题-python基础知识练习题(二)
- 系统制成docker镜像_Docker学习以及镜像制作流程
- Sublime Text3软件安装教程
- 17章 SPI控制器(XIlinx ZYNQ-7000 SOC UG-585文档)
- ArcGIS10.8中如何获取线状、面状数据的折点,并计算折点坐标?
- apache ab压力测试报错
- Hadoop运行任务时一直卡在: INFO mapreduce.Job: Running job
- 【测试理论基础】史上最强边界值用例设计与实践经验分享
- 到底买苹果XS还是XR_iPhone XS和iPhone XR买哪个好?苹果XR和XS区别对比测评
- Python学习记录(小甲鱼C的课程)
- 微软宣布任命前MOTO亚太总裁梁念坚为中国区CEO
- 自动化爬虫selenium基础教程
- Alpha多样性之箱线图解读
- Android 状态栏工具——一行代码实现状态栏字体变黑
- 广点通sdk接入(作为广告主身份)
- [LeetCode] 17. Letter Combinations of a Phone Number
- 什么是实时操作系统(RTOS)
- 计算机音乐作曲排名2019,2019全球歌曲排行榜_数据 2019全球古典音乐排行榜
- 免费获取全球10米分辨率的土地分类数据!