IEEE754浮点数格式
0赞IEEE754浮点数格式
——两忘而化其道(fei199311)
〇、开篇前言
在计算机中,需要对小数进行计算,因此需要相应的电路支持。支持小数计算的电路有两种:定点部件和浮点部件。定点部件与整数部件没有本质区别,只是要假设有一个小数点存在于某两位数之间,计算时需要把小数点对齐[1]。本文首先介绍浮点数标准IEEE754,为后续浮点部件的电路设计做好理论基础。
一、名词解释
IEEE(Institute of Electrical and Electronics Engineers)[2]:电气和电子工程师协会。作为一个电子类工程师,必须对其有所了解,可以说对她的了解是基本的行业素质。话说:一流的企业做标准,二流的企业做品牌,三流的企业做产品,IEEE致力于电气、电子、计算机工程和与科学有关的领域的开发和研究,在太空、计算机、电信、生物医学、电力及消费性电子产品等领域已制定了900多个行业标准,现已发展成为具有较大影响力的国际学术组织。
IEEE754[3]:IEEE 754标准IEE浮点数算术标准(IEEE Standard for Floating-Point Arithmetic)的标准编号,等同于国际标准ISO/IEC/IEEE 60559。该标准由美国IEEE计算机学会旗下的微处理器标准委员会(Microprocessor Standards Committee, MSC)发布。IEEE 754 标准规定了计算机程序设计环境中的二进制和十进制的浮点数自述的交换、算术格式以及方法。
浮点数[4]:浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。
二、单精度浮点数标准
IEEE754标准[5]主要定义了单精度和双精度这两种浮点数的格式。单精度浮点数用32位二进制数来表示,而双精度浮点数则用64位,双精度浮点数相对于单精度浮点数主要的作用在于提高了精度。由于单精度浮点数和双精度浮点数标准定义基本相同,这里只介绍单精度浮点数格式。
IEEE754标准32位单精度浮点数格式由三部分组成:第31位是符号位s(Sign),0表示正数,1表示负数;第30~23位是8位阶码位e(Exponent),用移码表示,其偏移量为127;第22~0位是23位尾数f(Fraction),用原码表示。如下图1所示:
图1.IEEE754单精度浮点数格式
如果0 < e < 255,单精度浮点数的值为(-1)s×2e-127×1.f,我们称其为规格化数。需要注意的是1.f中的1称为隐藏位,其并不占用32位中的任何一位。例如下面这个浮点数:
1_01111111_11000000000000000000000
该浮点数值为(-1)1×2127-127×1.11 = -(1+0,5+0,25) = -1.75。
上述是规格化浮点数格式,以下有几种非规格化浮点数格式标准:
1. e = 0,且f != 0:单精度浮点数的值为(-1)s×2-126×0.f
2. e = 0,且f = 0:单精度浮点数的值为(-1)s×0
3. e = 255,且f != 0:单精度浮点数的值为NaN(Not a Number),例如∞-∞ = NaN
4. e = 255,且f = 0:单精度浮点数的值为(-1)s×∞
双精度浮点数格式与单精度浮点数格式定义类似,这里就不再赘述了。
三、参考资料
[1] 李亚民. 计算机原理与设计——Verilog HDL版. 北京:清华大学出版社. 2011
[2] http://baike.baidu.com/view/1164737.htm?fromtitle=IEEE&fromid=150905&type=syn. 2015年02月15日
[3] http://baike.baidu.com/view/1698149.htm. 2015年02月15日
[4] http://baike.baidu.com/link?url=bp2fjdfgSOP8-PJwnDgzUbqqpnKxIq4GOnkKZFWnMqWVlHVi2gAUbSeXV8dy2oVjwQ0AARKgQ9DukmhpFBrXcq. 2015年02月15日
[5] IEEE. IEEE Standard for Binary Floating-Point Arithmetic. 1985