程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

二进制浮点数算术标准IEEE 754与转换实例

balukai 2025-02-08 10:02:22 文章精选 16 ℃

IEEE 754标准定义了在计算机系统中,用二进制表示浮点数的标准。

sign 为符号位 exponent 为指数位(以2为底) fraction为分数部分

Value=sign*exponent*fraction


一、IEEE 754的前世今生

在IEEE 754出现前,各家计算机公司自己使用自己的数值表示标准,当时在移植代码时非常困难。1976年,Intel为8086微处理器引入浮点协处理器时意识到,硬件工程师并不善于数值的定义。于是,Intel找到当时最优秀的数值专家--加州大学伯克利分校的 William Kahan 教授,Kahan教授又找了Coonan和Stone协助,共同完成了Intel浮点数格式设计。

IEEE(Institute of Electrical and Electronics Engineers)认识到Intel的浮点表示方案的优秀,决定采用类似Intel的方案作为 IEEE 的标准浮点格式。1985 年推出了二进制浮点运算标准 IEEE 754(IEEE Standard for Binary Floating-Point Arithmetic,ANSI/IEEE Std 754-1985),该标准限定指数的底为 2,并于同年成为 ANSI 标准。目前,几乎所有的计算机都支持 IEEE 754 标准,它大大地改善了科学应用程序的可移植性。

IEEE后来又推出了与底数无关的二进制浮点运算标准--- IEEE 854。1987年,被美国引用为 ANSI 标准。1989 年,国际标准组织 IEC 批准 IEEE 754/854 为国际标准 IEC 559:1989。修订后,标准号改为 IEC 60559。目前,几乎所有的浮点处理器完全或基本支持 IEC 60559。

二、IEEE 754定义

IEEE 754定义了四种浮点数值的方式:

单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上,很少使用)与延伸双精确度(79比特以上,通常以80位实现)。只有32位模式有强制要求,其他都是选择性的。大部分编程语言都有提供IEEE浮点数格式与算术,但有些将其列为非必需的。

IEEE 标准除定义了表示格式,还定义了以下特殊值:±0、反向规格化的数、±∞ 和 NaN。



十进制转换为二进制实例 (59.25)

整数部分:
59  ?   2   =29       -----1
29  ?   2   =14       -----1
14  ?   2   =7         -----0
7    ?   2   =3         -----1
3    ?   2  =1          -----1
1    ?   2  =0          -----1

小数部分:
0.25 x 2=0.5           ------0
0.5   x 2=1              ------1

按位表示(x86的字节序):
59.25------>111011.01

二进制转十进制 (111011.01

1-->1*2*2*2*2*2-->32
1-->1*2*2*2*2---->16
1-->1*2*2*2------->8
0-->0*2*2---------->0
1-->1*2------------>2
1-->1--------------->1
  .
0-->0*2的-1次方---->0
1-->1*2的-2次方---->0.25

将值求和:
111011.01---->59.25
最近发表
标签列表