当前位置:首页 » 服务存储 » ieee754的存储范围
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

ieee754的存储范围

发布时间: 2022-06-13 11:49:26

❶ 浮点数的取值范围用二进制表示的

目前多数系统都按照ieee-754标准来规定浮点数的存储格式。ieee754规定,单精度浮点数用4字节存储,双精度浮点数用8字节存储,分为三个部分:符号位、阶码和尾数。阶码即指数,尾数即有效小数位数。单精度格式阶码占8位,尾数占24位,符号位1位,双精度则为11位阶码,53位尾数和1位符号位,
显然差别就出来了。即使都是4字节存储的单精度浮点数,还有不使用ieee754标准的,我记得字长32位的大型ibm系列机就是1位符号位,24位尾数,7位阶码,基数16,而不是2,与此标准不同。所以浮点数的表示范围依赖的因素较多较复杂,主要取决于表示一个浮点数所用的字节数和阶码的大小与长度。说法不一样,但应该都是有根据的。

❷ 浮点数的表示范围

目前多数系统都按照IEEE-754标准来规定浮点数的存储格式。IEEE754规定,单精度浮点数用4字节存储,双精度浮点数用8字节存储,分为三个部分:符号位、阶码和尾数。阶码即指数,尾数即有效小数位数。单精度格式阶码占8位,尾数占24位,符号位1位,双精度则为11位阶码,53位尾数和1位符号位,
显然差别就出来了。即使都是4字节存储的单精度浮点数,还有不使用IEEE754标准的,我记得字长32位的大型IBM系列机就是1位符号位,24位尾数,7位阶码,基数16,而不是2,与此标准不同。所以浮点数的表示范围依赖的因素较多较复杂,主要取决于表示一个浮点数所用的字节数和阶码的大小与长度。说法不一样,但应该都是有根据的。

❸ IEEE 754啥意思java中float和double的存储方式就是用IEEE 754表示吗通俗一点讲讲,必采纳

IEEE二进制浮点数算术标准(IEEE 754)是最广泛使用的浮点数运算标准,它规定了四种表示浮点数值的方式:单精确度(32位元)、双精确度(64位元)、延伸单精确度(43位元以上,很少使用)与延伸双精确度(79位元以上,通常以80位元实做)。
2.1 实数的IEEE 754表示形式
一个实数V在IEEE 754标准中可以用V=(-1)s×M×2E 的形式表示[3,4],说明如下:
(1)符号s(sign)决定实数是正数(s=0)还是负数(s=1),对数值0的符号位特殊处理。
(2)有效数字M(significand)是二进制小数,M的取值范围在1≤M<2或0≤M<1。
(3)指数E(exponent)是2的幂,它的作用是对浮点数加权。
2.2 浮点格式
浮点格式是一种数据结构,它规定了构成浮点数的各个字段,这些字段的布局,及其算术解释[2]。IEEE 754浮点数的数据位被划分为3个字段,对以上参数值进行编码:
(1)一个单独的符号位s直接编码符号s。
(2)k位的偏置指数e(e=ek-1…e1e0)编码指数E,移码表示。
(3)n位的小数f(fraction)(f=fn-1…f1f0)编码有效数字M,原码表示。
2.3 浮点数的分类
根据偏置指数e的值,被编码的浮点数可分成三种类型。
(1)规格化数
当有效数字M在范围1≤M<2中且指数e的位模式ek-1…e1e0既不全是0也不全是1时,浮点格式所表示的数都属于规格化数。这种情况中小数f(0≤f<1 ) 的二进制表示为0. fn-1…f1f0。有效数字M=1+f,即M=1. fn-1…f1f0 (其中小数点左侧的数值位称为前导有效位) 。我们总是能调整指数E,使得有效数字M在范围1≤M<2中,这样有效数字的前导有效位总是1,因此该位不需显示表示出来,只需通过指数隐式给出。
需要特别指出的是指数E要加上一个偏置值Bias,转换成无符号的偏置指数e,也就是说指数E要以移码的形式在存放计算机中。且e、E和Bias三者的对应关系为e=E+Bias,其中Bias=2k-1-1。
(2)非规格化数
当指数e的位模式ek-1…e1e0全为零(即e=0)时,浮点格式所表示的数是非规格化数。这种情况下,E=1-Bais,有效数字M=f=0. fn-1…f1f0 ,有效数字的前导有效位为0。
非规格化数的引入有两个目的。其一是它提供了一种表示数值0的方法,其二是它可用来表示那些非常接近于0.0的数。
(3)特殊数
当指数e的位模式ek-1…e1e0全为1时,小数f的位模式fn-1…f1f0全为0(即f=0)时,该浮点格式所表示的值表示无穷,s=0 时是+∞,s=1时是-∞。
当指数e的位模式ek-1…e1e0全为1时,小数f的位模式fn-1…f1f0不为0(fn-1、…、f1、f0、至少有一个非零即f≠0)时,该浮点格式所表示的值被称为NaN(Not a Number)。比如当计算 或∞-∞时用作返回值,或者用于表示未初始化的数据。
3 IEEE 754浮点存储格式
与浮点格式对应,浮点存储格式规定了浮点格式在存储器中如何存放。IEEE标准定义了这些浮点存储格式,但具体选择哪种存储格式由实现工具(程序设计语言)决定。
汇编语言软件有时取决于所使用的存储格式,但更高级的语言通常仅处理浮点数据类型的语言概念。这些浮点数据类型在不同高级语言中有不同的名字,相应的IEEE格式如表1。
表1 IEEE 格式和语言类型
IEEE精度 C,C++ FORTRAN
单精度 float REAL or REAL*4
双精度 double DOUBLE PRECISION or REAL*8
扩展双精度 long double REAL*16 [仅适用于SPARC和PowerPC]

IEEE 754标准准确地定义了单精度和双精度浮点格式,并为这两种基本格式的分别定义了扩展格式,表1里扩展双精度格式是IEEE标准定义的扩展双精度类中的一种。
下面详细讨论在Intel x86和SPARC平台上使用的三种IEEE浮点存储格式。
3.1 单精度格式
IEEE单精度浮点格式共32位,包含三个构成字段:23位小数f,8位偏置指数e,1位符号s。将这些字段连续存放在一个32位字里,并对其进行编码。其中0:22位包含23位的小数f; 23:30位包含8位指数e;第31位包含符号s。如图1所示。

图1 单精度存储格式
一般地,32位字的第0位存放小数f的最低有效位LSB(the least significant bit),第22位存放小数f的最高有效位MSB(the most significant bit);第23位存放偏置指数的最低有效位LSB,第30位存放偏置指数的最高有效位MSB;最高位,第31位存放符号s。
3.2 双精度格式
IEEE双精度浮点格式共64位,占2个连续32位字,包含三个构成字段:52位的小数f,11位的偏置指数e,1位的符号位s。将这2个连续的32位字整体作为一个64位的字,进行重新编号。其中0:51位包含52位的小数f;52:62位包含11位的偏置指数e;而最高位,第63位包含符号位s。如图2所示。

图 2 双精度浮点数的存储格式
f[31:0]存放小数f的低32位,其中第0位存放整个小数f的最低有效位LSB,第31位存放小数f的低32位的最高有效位MSB。
在另外的32位的字里,第0 到19位,即f[51:32],存放小数f的最高的20位,其中第0位存放这20位最高有效数中的最低有效位LSB,第19位存放整个小数f的最高有效位MSB。第20到30位,即e[52:62],存放11位的偏置指数e,其中第20位存放偏置指数的最低有效位LSB,第30位存放最高有效位MSB。最高位,第31位存放符号位s。
在Intel x86结构计算机中,数据存放采用小端法(little endian),故较低地址的32位的字中存放小数f的f[31:0]位。而在在SPARC结构计算机中,因其数据存放采用大端法(big endian),故较高地址的32位字中存放小数f的f[31:0]位。
3.3 扩展双精度格式
⑴ 扩展双精度格式(SPARC 结构计算机)
该4倍精度浮点环境符合IEEE关于扩展双精度格式的定义。该浮点环境的4倍精度浮点格式共128位,占4个连续32位字,包含3个构成字段:112位的小数f,15位的偏置指数e,和1位的符号s。将这4个连续的32位字整体作为一个128位的字,进行重新编号。其中0:110位包含小数f;112:126位包含偏置指数e;第127位包含符号位s。如图3所示。
在SPARC结构计算机中,地址最高的32位字存放小数的32位最低有效位,即f[31:0];但是在PowerPC结构计算机中,却是地址最低的32位字存放这些位。
紧邻的两个32位字(在SPARC机中向下计算,在PowerPC机中向上计算)分别存放f[63:32]和f[95:64]。
最后一个字的第0到15位存放小数的最高16位,即f[111:96]。其中第0位存放该16位的最低有效位,第15位存放整个小数f的最高有效位。第16到30位存放15位的偏置指数e,其中第16位存放偏置指数的最低有效位,第30位存放它的最高有效位。最高位,第31位存放符号s。

图 3 扩展双精度存储格式 (SPARC 结构计算机)
⑵ 扩展双精度格式(Intel x86结构计算机)
该浮点环境双精度扩展格式符合IEEE双精度扩展格式的定义。该浮点环境的扩展双精度格式共80位,占3个连续32位字,包含四个构成字段:63位的小数f,1位显式前导有效位(explicit leading significand bit)j,15位偏置指数e,和1位符号位s。将这3个连续的32位字整体作为一个96位的字,进行重新编号。其中0:63包含63位的小数f,第63位包含前导有效位j,64:78位包含15位的偏置指数e,最高位第79位包含符号位s。
在Intel结构系计算机中,这些字段依次存放在十个连续的字节中。但是,由于 UNIX System V Application Binary Interface Intel 386 Processor Supplement (Intel ABI) 要求双精度扩展参数,从而占用堆栈中3个相连地址的32位字,其中最高一个字的高16位未被使用,如图4所示。

图4 扩展双精度存储格式(Intel x86结构计算机)

地址最低的32位字存放小数f的低32位,即f[31:0]。其中第0位存放整个小数f的最低有效位LSB 第31位存放小数低32位的最高有效位MSB。
地址居中的32位字,第0到30位存放小数f的31位最高位,即f[62:32]。其中第0位存放31位最高小数位的最低有效位LSB,第30位存放整个小数的最高有效位,地址居中的32位字的最高位第31位存放显式的前导有效位j。
地址最高32位字里,第0到14位存放15位的偏置指数e,第0位存放偏置指数的最低有效位LSB,第14位存放最高有效位MSB,第15位存放符号位s。虽然地址最高的32位字的高16位在Intel x86结构系列机种未被使用,但他们对符合Intel ABI的规定来说,是必需的。
4 总结
以上讨论了Intel x86、Power PC和SPARC平台上使用的三种IEEE 754浮点数格式及其存储格式,下面对浮点数的相关参数进行总结,具体见表2。

表2 IEEE 浮点格式参数总结
参数 浮点格式
单精度 双精度 扩展双精度(Intel x86) 扩展双精度(SPARC)
小数f宽度n 23 52 63 112
前导有效位 隐含 隐含 显式 隐含
有效数字M精度p 24 53 64 113
偏置指数宽度k 8 11 15 15
偏置值Bias +127 +1023 +16383 +16383
符号位宽度 1 1 1 1
存储格式宽度 32 64 80 128

参考文献
[1] David Goldberg with Doug Priest. What Every Computer Scientist Should Know about Floating-Point Arithmetic. http://grouper.ieee.org/
[2] Sun Corporation.Numerical Computation Guide, pp1-11. http://docs.sun.com
[3] Randal E.Bryant,David O'Hallaron. Computer Systems Aprogrammer’s Perspective(英文版) [M] .北京:电子工业出版社,2004
[4]David A. Patterson, John L. Hennessy.Computer Organization & Design: The Hardware/Software Interface. (英文版 第二版) [M] . 北京:机械工业出版社,1999.275~321

❹ IEEE 754浮点表示法的范围是怎么计算的

标准表示法
为便于软件的移植,浮点数的表示格式应该有统一标准.1985年IEEE(Institute of
Electrical and Electronics
Engineers)提出了IEEE754标准.该标准规定基数为2,阶码E用移码表示,尾数M用原码表示,根据原码的规格化方法,最高数字位总是1,该
标准将这个1缺省存储,使得尾数表示范围比实际存储的一位.实数 的IEEE754标准的浮点数格式为:
具体有三种形式:
表3 IEEE754三种浮点数的格式参数
浮点数
类型 存储位数 偏移值( )
阶码E的取值范围 真值表达式
数符(s) 阶码(E) 尾数(M) 总位数 十六进制 十进制
短实数 1 8 23 32 7FH 127 1~254
长实数 1 11 52 64 3FFH 1023 1~2046
临时实数 1 15 64 80 3FFFH 16383 1~32766
对于阶码为0或为255(2047)的情况,IEEE有特殊的规定,由于篇幅有限,在此不讨论.
在浮点数总位数不变的情况下,其精度值与范围值是矛盾的,因此一般的机器都提供有单、双精度两种格式.表4中列出了IEEE754单精度浮点数的表示范围,对于双精度只需要修改一下偏移值和尾数位数即可.
表4 IEEE754单精度、双精度浮点数范围
典型范围 浮点数代码 真 值
数符(Ms) 阶码(E) 尾数(M)
最大正数
最小正数
绝对值最大的负数
绝对值最小的负数 0
0
1
1 11111110
00000001
11111110
00000001 11………11
00………00
11………11
00………00

准浮点数的存储格式与图1(b)相似,只是在尾数中隐含存储着一个1,因此在计算尾数的真值时比一般形式要多一个整数1.对于阶码E的存储形式因为是
127的偏移,所以在计算其移码时与人们熟悉的128偏移不一样,正数的值比用128偏移求得的少1,负数的值多1,为避免计算错误,方便理解,常将E当
成二进制真值进行存储.例如:将数值-0.5按IEEE754单精度格式存储,先将-0.5换成二进制并写成标准形式:-0.510=-0.12=-
1.0×2-12,这里s=1,M为全0,E-127=-1,E=12610=011111102,则存储形式为:
1 01111110 000000000000000000000000=BE00000016
这里不同的下标代表不同的进制.

❺ IEEE 754格式是什么

IEEE二进制浮点数算术标准(IEEE 754)是最广泛使用的浮点数运算标准,它规定了四种表示浮点数值的方式:单精确度(32位元)、双精确度(64位元)、延伸单精确度(43位元以上,很少使用)与延伸双精确度(79位元以上,通常以80位元实做)。

浮点数

在 C 语言中,有两种存储浮点数的方式,分别是 float 和 double ,当然了还有long double。这几种浮点型所容纳的长度不同,当然它们存储的精度也就不同了。

对于整形而言,比如 int 、short 、char 之类的,在内存中的存储方式都是用补码进行表示。而浮点数在内存中并没有使用补码进行表示。浮点数在内存中存储的方式使用了IEEE的编码表示方式,即使用符号、指数和尾数的形式进行存储的。

❻ IEEE754浮点数表示法中阶码的范围是多少

阶码 E = 实际指数 e + 偏移量。

阶码 E 是八位。

最小:0000 0000(十进制 0);

最大:1111 1111(十进制 255)。

全 0 全 1 时,已有定义,就不详细说了。

E,只能用:1 ~ 254。

那么,偏移量选 128,e 只能是:-127~+126。

如果,偏移量选 127,e 就能是:-126~+127。

选后者,浮点数最大值的范围,就是前者的两倍!

❼ 无法理解IEEE754规定中指数部分实际取值范围是-127~128,而不是-127~127或-128~127

实际的指数值 E = e - Bias, e就是8位指数域的编码制(作为无符号数), 取值范围为0-255 (但e=0和255作为特殊用途.Bias = 127, 那么 E的范围就应该为-126~127。
当e= 0时,E = 1 - Bias , 用来表示0附近的数,0.fnfn-1...f1f0
当e = 255时,如果fraction部分也是0,用来表示无穷大,符号位为1表示负无穷大,0表示正无穷大
如果fraction部分非0,表示NaN, 即 Not a number.

❽ ieee754标准的32位浮点规格化数是多少

ieee754标准的32位浮点规格化数是。

第一,先转换为二进制数,第二,转化为规格化数,第三,按1823转化。

27/64=0.421875用二进制数表示为0.011011=1.1011×e^(-2)。

E=e+127=125用二进制数表示为01111101。

M=1011。

S=0。

SEM即:。

单精度浮点数极值情况规定,最大的非规约数实际指数为-126,有偏移指数为0,指数域为00000000;最大的规约数实际指数为127,有偏移指数为254,指数域为11111110。

IEEE754标准的相关要求规定:

1、对于一个数,其二进制科学计数法表示下的指数的值,为指数的实际值;而根据IEEE 754标准对指数部分的编码的值,为浮点数表示法指数域的编码值。

2、指数偏差(表示法中的指数为实际指数减掉某个值)为 ,其中的e为存储指数的比特的长度。减掉一个值为指数必须是有号数才能表达很大或很小的数值,但是有号数通常的表示法——补码,将会使比较变得困难。

计算机组成原理:

若不对浮点数的表示作出明确规定,同一个浮点数的表示就不是唯一的。例如,十进制数可以表示成1.11×100,0.111×101,0.0111×102等多种形式。

❾ IEEE754是什么

IEEE754代码
标准表示法
为便于软件的移植,浮点数的表示格式应该有统一标准(定义)。1985年IEEE(Institute of Electrical and Electronics Engineers)提出了IEEE754标准。该标准规定基数为2,阶码E用移码表示,尾数M用原码表示,根据原码的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的一位。实数 的IEEE754标准的浮点数格式为:
具体有三种形式:
表3 IEEE754三种浮点数的格式参数
浮点数
类型 存储位数 偏移值( )
阶码E的取值范围 真值表达式
数符(s) 阶码(E) 尾数(M) 总位数 十六进制 十进制
短实数 1 8 23 32 7FH 127 1~254
长实数 1 11 52 64 3FFH 1023 1~2046
临时实数 1 15 64 80 3FFFH 16383 1~32766
对于阶码为0或为255(2047)的情况,IEEE有特殊的规定。
在浮点数总位数不变的情况下,其精度值与范围值是矛盾的,因此一般的机器都提供有单、双精度两种格式。表4中列出了IEEE754单精度浮点数的表示范围,对于双精度只需要修改一下偏移值和尾数位数即可。
表4 IEEE754单精度、双精度浮点数范围
典型范围 浮点数代码 真 值
数符(Ms) 阶码(E) 尾数(M)
最大正数
最小正数
绝对值最大的负数
绝对值最小的负数 0
0
1
1 11111110
00000001
11111110
00000001 11………11
00………00
11………11
00………00
标准浮点数的存储格式与图1(b)相似,只是在尾数中隐含存储着一个1,因此在计算尾数的真值时比一般形式要多一个整数1。对于阶码E的存储形式因为是 127的偏移,所以在计算其移码时与人们熟悉的128偏移不一样,正数的值比用128偏移求得的少1,负数的值多1,为避免计算错误,方便理解,常将E当成二进制真值进行存储。例如:将数值-0.5按IEEE754单精度格式存储,先将-0.5换成二进制并写成标准形式:-0.510=-0.12=-1.0×2-12,这里s=1,M为全0,E-127=-1,E=12610=011111102,则存储形式为:
1 01111110 000000000000000000000000=BE00000016
这里不同的下标代表不同的进制。

❿ IEEE754的范围是10^-38~10^38,为什么还可以表示最大正整数2^128-2^104

单精度浮点32位,其中指数段有8bits,指数范围为[-127,127] 2的127次方约等于1.7*10的38次方。 38次方是数量级,所以得出命题结论。