IEEE 754浮点数工业标准

article/2025/7/3 9:42:20

文章目录

  • 浮点数概述
  • 浮点数的格式
  • IEEE 754标准规定的浮点数的格式
      • IEEE 754偏移量与指数范围问题
      • IEEE 754中浮点数值的三种情况:
          • 1. 规格化的浮点数的值
          • 2. 非规格化的值
          • 3. 特殊值
  • Java中的浮点数类型

浮点数概述

浮点数,是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。(该词条来源于百度百科)
在这里插入图片描述
N=(-1S)×M×RE
数符:浮点数的符号,0表示正数,1表示负数。
阶码:浮点数的指数,用移码表示,基数一般默认为2。阶码决定浮点数的取值范围
尾数:“尾数”又可称之为“精度”,即对表达结果精确程度产生重要影响的数,也就是常说的significant digits,缩写后为significand(有效数,尾数)。尾数决定浮点数的精度,为了能够充分利用尾数表示更多的有效数字,通常叫尾数的绝对值限定在[0.5,1],尾数用原码表示,因此要求原码的小数点的右边正数为1,负数为0。


浮点数的格式

浮点数有四种格式:单精度浮点数,双精度浮点数,扩充的单精度浮点数,扩充的多精度浮点数。


IEEE 754标准规定的浮点数的格式

在这里插入图片描述

IEEE 754偏移量与指数范围问题

问题描述:n位移码的表示范围明明是[-2n-1 , 2n-1-1],偏移量是2n-1,浮点数的指数使用移码表示,为什么n位浮点数的指数范围是[-2n-1+ 2 , 2n-1-1],偏移量是2n-1-1呢?即指数范围少了两个数,偏移量也少了一位。

移码的作用主要是方便浮点数的运算。阶码对阶需要比较两个浮点数阶码的大小,而阶码在补码的基础上偏移了+2n-1,这样即使对于正负不相同的机器数,根据机器数实际的二进制数值也能轻松判断其大小。

对于IEEE 754中的单精度浮点数而言,其指数是8位,若偏移量是+27(+128),则其真值的范围是[-128,127],由于要使用阶码全0和全1来表示非规格化的值和特殊值,因此真值的范围变为[-127,126],对应的浮点数范围变为:
在这里插入图片描述
可以看出浮点数的表示范围左右很不对称,差的不止一丁半点,而是38个数量级。

若使用偏移量+127,除去非规格化值和特殊值后,其真值的范围变为[-126,127],对应的浮点数范围变为:
在这里插入图片描述
可以看到浮点数的表示范围很明显平衡了许多。

所以IEEE 754标准的移码较原有的移码,其指数范围少了两个数,偏移量也少了一位。移码顾名思义是一种对补码有偏移量的编码,无论偏移量是多少,都可以称之为移码,但是得更好地更合适地为我们所用。使用下面的四位补码和四位移码与它们的真值的对应关系中可以很直观地表述上述推理。

这是4位的补码与真值的对应关系

补码真值
1000-8
1001-7
1010-6
1011-5
1100-4
1101-3
1110-2
1111-1
00000
00011
00102
00113
01004
01015
01106
01117

这是原来规定偏移量为8的4位的移码与真值的对应关系

移码真值
0000-8
0001-7
0010-6
0011-5
0100-4
0101-3
0110-2
0111-1
10000
10011
10102
10113
11004
11015
11106
11117

这是为了防止浮点数范围不平衡新规定的偏移量为7的移码及其真值。

移码真值
0000非规格化值
0001-6
0010-5
0011-4
0100-3
0101-2
0110-1
0111-0
10001
10012
10103
10114
11005
11016
11107
1111特殊值

IEEE 754中浮点数值的三种情况:

1. 规格化的浮点数的值
  • 阶码部分的二进制不全为1也不全为0
  • 尾数部分约定小数点的左边为1,即1.XXXXXXX,这是一种额外获得一个精度位的表示技巧。
  • IEEE 754没有要求原码的小数点的右边正数为1,负数为0,所以正常情况下,尾数的表示范围是[1,2),因此规格化的浮点数不能表示那些非常接近0的数以及0。浮点数在计算机里面的表示形式是有限的、离散的、近似的,存在舍入误差,即只是实数的一个非常接近的子集。在一些精度要求非常高或者数值比较的场景,比较最好不要使用浮点数,会产生一些错误,主要原因是计算机二进制系统无法精确表示1/10,就好像十进制系统无法精确表示1/3。

2. 非规格化的值
  • 阶码部分的二进制全为0,其对应的真值是1-偏移量。比如32位单精度浮点数的阶码的真值如果是 -126就表示这是非规格化的数。
  • 尾数部分没有像规格化的浮点数一样有约定的1,就直接是对应的小数。
  • 非规格化的数用于表示那些非常接近0的数以及0。0的表示只要尾数为0就可以了,但是由于有数符的存在,因此存在**+0.0和-0.0**之分。

3. 特殊值
  • 阶码部分的二进制全为1
  • 尾数部分全为0表示无穷大。当数符为0时表示正无穷大,当数符为1时表示负无穷大。
  • 当尾数不全为0时,称为“NaN”,即不是一个数。当远算结果不是实数或者无穷,就表示NaN。

Java中的浮点数类型

Java所有浮点数都遵守IEEE 754标准,但Java中只有单精度浮点数float和双精度浮点数double。
在这里插入图片描述

在这里插入图片描述


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

相关文章

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-…

php 集成 spss,spss怎么导入数据

spss导入数据的方法:1、打开数据;2、选择类型;3、打开类型数据;4、编辑;5、处理数据;6、选择数据;7、打开数据。 本文操作环境:Windows7系统,SPSS20.0版本,De…

spss变量视图转数据视图_教大家SPSS如何导入数据进行分析

近日有关于SPSS如何导入数据进行分析的问题受到了很多网友们的关注,大多数网友都想要知道SPSS如何导入数据进行分析的具体情况,那么关于到SPSS如何导入数据进行分析的相关信息,小编也是在网上进行了一系列的信息,那么接下来就由小编来给大家分享下小编所收集到与SPSS如何导…

处理数据spss乱码

一、现象 通过数据分析软件处理后的数据(文件是csv格式编码是utf8) ,到了Python处理(这里用的是python2)后竟然乱码了,具体表现就是汉字乱码,用csv打开后无法显示正常的汉字,然后csv串位。 二、分析 1.乱码首先我想到…

spss导入数据 error:对于当前服务器语言环境而言,文本过长

这是因为文件路径太长了,文件放的太深了 复制到桌面上,再导入就欧克了