计算机组成原理:IEEE754标准中,为什么指数真值e变成阶码加上的偏移值是127不是128?

article/2025/6/10 6:20:42

1.浮点数在计算机里的存储方式

以32位为例,短浮点型float,按照按照 IEEE754 标准,在计算机里的存储格式如下
在这里插入图片描述
数符S:表示浮点数的符号,占1位,0—正数、1—负数;
尾数M:23位,原码纯小数表示,小数点在尾数域的最前面;
阶码E:8 位,采用有偏移值的移码表示;
移127码,即E=e+127,E的8位二进制数即为移127码的编码;
浮点数的真值:N=(-1)S×(1.M)×2^(E-127)\

2,按照移码的定义,k位原码的移码应该是: 真值+2^(K-1) 那么8位阶码应该是加128才对.那为什加的是127呢?

首先,我们知道移码是真值的一种去符号话的表示,阶码之所以用移码是因为移码值大的指数就大,通俗点就是把负数范围的数变成正数,方便比较.

规格化
对于将某个实数表示为计算机浮点数,首先要将其正规化,也就是表示为形如:在这里插入图片描述

的样子。其中b是0或1,而p二进制数表示的指数位。这样,假设想表示为单精度(float)的浮点数,那么:
第一位符号位用0表示正,用1表示负
将指数p加上移码表示为8位的二进制数
在接下来的23位填充位数b部分。由于正规化表示时,最左边部分总是1,所以我们只需表示23位的尾数即可.

所以,在规格化表示中8位移码理论上可以表示的表示范围为0~ 255,但是IEEE754中又规定,当阶码为00000000,尾数也为0的时候表示真值为0,结合S符号位,有正0和负0之分;而当阶码为11111111,尾数为0时,表示真值为无穷大,结合S符号位,有正无穷大和负无穷大,但是为了在规格化的浮点数中规避掉这种情况,所以将偏移值选择127,而不选128;这样阶码就变成1~ 254,对应的指数值就为-126~127;这也就解释了为什么偏移值要选择127,而不选择128的原因了.

那么问题来了,既然把那些特殊值给规避掉了,那么他们该如何表示呢?
在这里插入图片描述

按照上面的浮点数表示方法,我们发现并不能表示出数值0的大小。因为我们认为前导数位的值永远为0,这个时候无论尾数的小数部分和指数部分怎么取,浮点数的值都不会是0。为此我们规定,当阶码全部为0且尾数的小数位全为0时,这个时候浮点数的值为0。注意,+0和-0时两个不同的浮点数,即使他们的数值一样,但是浮点数的表示方式不一样。

非标准化的值
当指数部分全为0,但时小数位不全为0的时候,这个时候浮点数表示的值就是非标准化的值。这个时候我们认为该浮点数的前导数位为0,因此这个时候的单精度浮点数大小为(−1)^s × 0.M × 2 ^−126,具体原因可以这样理解,非标准化可以看做是标准化的特殊情况,这时候阶码去0,但是因为是非规格化,所以不是默认隐藏了一位1,可以看成规格化还要向右移动一位.所以,指数就变成了126,其实非规格化就是在规格化的基础上扩展了精度.

无穷大
当指数位全为1,而尾数的小数部分全为0时表示+∞和−∞,同时通过符号位来区分+∞和−∞。所以采用IEEE 754标准表示浮点数可以很好的处理无穷大的情况。

非数字(NaN)
NaN(Not a Number)用来表示非数字的值,当指数位全为1且尾数的小数部分不为0时表示NaN值。一共有两类NaN值,静态非数(QNaN, Quiet NaN)和警告非数(SNaN, Signalling NaN)。当阶码为255时尾数不为0的时候,表示的数值就为NaN,
他的目的就是让程序员能够退持进行测试和判断的时间
.

补充一点,虽然说java中, float类型占4个字节但是它表示数的范围从2^-126~2 ^127,而long类型占8个字节,其取值范围为long的最大值有符号是 2 ^63-1,无符号是2 ^64-1,因此float类型要比long类型表示范围大得多,因为float是存储的指数,而long类型是直接存放数的二进制原码.


http://chatgpt.dhexx.cn/article/tyaSr3Jc.shtml

相关文章

ieee sci 期刊 写作经验 分享 博士发展阶段

0. 前言 本文仅记录最近我在论文写作中遇到的问题(感谢老师、师兄的用心指导),仅仅是我的个人分享,不适用于所有人。 1. introduction - 如何切入自己的工作? 1.1 不要没事找事 例子: 比如你做的是目标…

谈谈论文的发表(电光与控制,IEEE ACCESS)

前言 目前,科研任务差不多告一段落,总结一下发表论文的经验以及经历。 2021年3月,录用IEEE ACCESS一篇,本来老师想让投IEEE trans系列,但是工作的深度差一点,并且没有很好的实例论证,只有仿真&…

IEEE 754标准

普通规则下: 移码: 补码的基础上将符号位取反。注意:移码只能用于表示整数 移码的定义: 移码 真值 偏置值(确定移码,首先要确定偏置值) 偏置值一般取2^n-1,此时移码 补码符号位取反 IEEE 754规则下: 偏置值 2^n-1 - 1 相当于将普通规…

IEEE 754浮点数工业标准

文章目录 浮点数概述浮点数的格式IEEE 754标准规定的浮点数的格式IEEE 754偏移量与指数范围问题IEEE 754中浮点数值的三种情况:1. 规格化的浮点数的值2. 非规格化的值3. 特殊值 Java中的浮点数类型 浮点数概述 浮点数,是属于有理数中某特定子集的数的数字…

SPSS Modeler导入excel文件时出现“无法读取文件列名”解决方法

SPSS Modeler导入excel文件时出现“无法读取文件列名”解决方法 经过本人多次尝试,终于发现了原因 原因是:excel文件在后台打开了,因此spss modeler读取不了 解决方法:关闭正在打开的该excel文件,再读取即可 如果解决了…

SPSS Modeler 数据导入操作

1、导入文本文件 数据选项卡,主要是指定所读取数据的基本类型,通常无需修改,若需修改要先在覆盖那里打钩,然后下拉存储框进行修改 过滤选项卡是选择读取数据时读取哪些数据,同时可以修改变量名。 类型选项卡是指定读取…

SPSS导入excel文件时,保留4位小数点

SPSS导入excel文件时,保留4位小数点 SPSS导入excel文件时,会只保留整数部分,而小数点部分的数据不显示,如下图: 我尝试在SPSS的变量视图里将小数点位数改成4位,如图,但是导入数据后&#xff0c…

SPSS for Mac导入Excel表格找不到文件、以及“文件受密码保护”报错问题的解决办法

SPSS版本25,在导入Excel文件时显示不出来,需要移动到磁盘-用户-apple里面,我这里是我自己的用户名,移进去就可以看到了 之后可以用导入文件打开,也可以直接拖到数据视图,但是我这边又出现了一个小问题 出现…

SPSS数据抽取

SPSS数据抽取 数据抽取一般分为两类:字段拆分和随机抽样 字段拆分 数据抽取,也称为数据拆分,是只保留原数据表中的某些字段、记录的部分信息,形成一个新字段、新记录。 在spss中导入我们需要的数据,变量主要包含如…

利用SPSS做数据分析②之数据处理1

SPSS数据处理有六个步骤,分别是: 数据导入数据清洗数据抽取数据合并数据分组数据标准化 数据处理是根据数据分析的目的,将收集到的数据,用适当的处理方法进行加工、整理,形成适合数据分析的要求样式,它是数…

SPSS怎么筛选无效数据

我们在用IBM SPSS进行数据分析的时候,经常会遇见这样一种情形,想把不符合自己分析要求的数据全部筛掉。我们把这些要筛掉的数据叫作无效数据,无效数据不筛选掉不但会降低分析的效率,而且会影响最终结果的准确性。 要想提高准确性…

SPSS学习笔记

什么都写 插入个案:指一行 插入变量:指一列 设置 语言 编辑->选项 语言中可以选择输出的语言和界面的语言 变量定义 左下角切换到变量视图,可以修改变量的属性 1.类型可选,注意会影响到后面测量中的选项,如…

SPSS数据插补方法

问题:ArcGIS多值提取至点的数据有很多缺失值 这是对多个区域分区统计后的结果,由于ET的质量不高,所以有很多缺失值 那么,怎样才能将这些值进行插补成我们认为可靠的格式呢? 第一步-将arcgis多值提取至点的数据整理成…

python数据导入spss_spss-数据抽取-拆分与合并

数据抽取也成为数据拆分,是指保留、抽取原数据表中某些字段、记录的部分信息,形成一个新字段、新纪录。分为:字段拆分和随机抽样两种方法。 一:字段拆分 如何提取“身份证号码”字段。身份证号码里面包含了许多信息,…

SPSS数据清洗

SPSS数据清洗 关于spss对数据的清洗,就是将多余重复的数据筛选清楚,将确实的数据补充完整,将错误的数据纠正活删除。 下面主要内容是关于最常用的重复数据操作: 首先在spss中导入需要去重的数据: 选择数据菜单&…

SPSS读取数据文件

1.读取Excel数据文件 (1)选择“文件”-“打开”-“数据”,在弹出的“打开数据”对话框下选择Excel文件,如图所示 (2)选择要打开的Excel文件,点击“打开”,如图所示 (3)可…

SPSS读取数据出现中文字符显示乱码的解决方案

在打开数据标签中含有中文字符的SPSS数据文件时,由于编码问题有时会出现乱码的状况。譬如下图;但是尝试过单纯修改字符的字体之后并未能解决乱码问题。但值得注意的是,本人在打开文件的时候spss提示由于字符的长度等因素,因此需要…

r语言导入spss数据_R语言如何导入数据

在使用R的时候,我们肯定需要导入数据,现在总结一下如何导入不同类型的数据: 1.使用键盘输入数据 在导入数据比较少的时候,我们使用这种方法。R中的函数 edit() 会自动调用一个允许手动输入数据的文本编辑器。具体步骤如下: (1) 创建一个空数据框(或矩阵) ,其中变量名和变…

spss之数据预处理

目录 问题思考: 二、缺失类型 完全随机缺失(MCAR) 随机缺失(MAR) 非随机缺失(MNAR) 三、缺失值填补的方法 完整观测数据分析 填补: 单值插补 多重插补 四、缺失值填补的过程 描述缺失值的模式 …

matlab数据导入 spss,【excel数据导入系统】excel数据导入_excel数据导入spss-系统城...

2017-02-15 16:28:13  浏览量:283 excel的功能十分强大,它能够帮助我们更快地编辑处理数据。不过,一些初学者表示自己并不太会使用一般的导入数据库技巧。这该怎么办呢?接下来,小编就以windowsxp系统为例,给大家带来excel表格数据导入数据库的方法,供大家参考。 2016-…