IEEE754是什么
发布网友
发布时间:2022-04-20 10:27
我来回答
共2个回答
热心网友
时间:2023-05-23 04:01
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
这里不同的下标代表不同的进制。
热心网友
时间:2023-05-23 04:02
定点:即它的小数点的位置是固定的
如3.23
4.21312它们的小数点都在第一位后
浮点:即小数的位数可动
如3.12*e2
0.312*e3
定点表示没啥用
主要是浮点在计算机中用ieee754表示
ieee754代码
标准表示法
为便于软件的移植,浮点数的表示格式应该有统一标准(定义)。1985年ieee(institute
of
electrical
and
electronics
engineers)提出了ieee754标准。该标准规定基数为2,阶码e用移码表示,尾数m用原码表示,根据原码的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的多一位。实数
的ieee754标准的浮点数格式为:
具体有三种形式:
ieee754三种浮点数的格式参数
类型
存储位数
偏移值
数符(s)
阶码(e)
尾数(m)
总位数
十六进制
十进制
短实数(single,float)
1位
8位
23位
32位
0x7fh
+127
长实数(double)
1位
11
位
52位
64位
0x3ffh
+1023
临时实数(延伸双精确度,不常用)
1位
15位
64位
80位
0x3fffh
+16383
对于阶码为0或为255(2047)的情况,ieee有特殊的规定:
如果
e
是0
并且
m
是0,这个数±0(和符号位相关)
如果
e
=
2
−
1
并且
m
是0,这个数是
±无穷大(同样和符号位相关)
如果
e
=
2
−
1
并且
m
非0,这个数表示为不是一个数(nan)。
标准浮点数的存储在尾数中隐含存储着一个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
这里不同的下标代表不同的进制。