基于IEEE 754的浮点数存储格式分析研究(1)
2014-04-06 01:03
导读:计算机应用论文论文,基于IEEE 754的浮点数存储格式分析研究(1)应该怎么写,有什么格式要求,科教论文网提供的这篇文章是一个很好的范例:
摘 要 浮点数的表示和存储直接影响计算机的结构和性能,IEEE
摘 要 浮点数的表示和存储直接影响计算机的结构和性能,IEEE 754是浮点运算部件事实上的工业标准,是计算机上使用最为广泛的浮点标准。文章在阐述了浮点数的基本概念和IEEE 754浮点数的表示形式及其格式的基础上,比较深入的比较、分析和研究了Intel x86和SPARC结构计算机上使用的三种IEEE浮点数的存储格式。 关键词 IEEE 754;浮点数;浮点格式;浮点存储格式;规格化0引言 IEEE(Institute of Electrical and Electronics Engineers,电子
电气工程师协会)在I985年制定的IEEE 754(IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Std 754-1985 )二进制浮点运算规范,是浮点运算部件事实上的工业标准。许多计算机用户有机会在Intel x86和SPARC 或Power PC机之间交换二进制数据,所以对照Intel x86和SPARC结构计算机的数据表示及相关程序设计语言,讨论IEEE 754浮点数存储格式的细节是有意义的。本文对浮点数、IEEE 754浮点数的表示方法、规格化处理等进行了分析,重点分析、比较了Intel x86和SPARC结构计算机IEEE 754浮点数的存储格式。1 浮点数 在计算机系统的发展过程中,曾经提出过多种方法表示实数,但是到目前为止使用最广泛的是浮点表示法。相对于定点数而言,浮点数利用指数使小数点的位置可以根据需要而上下浮动,从而可以灵活地表达更大范围的实数。 浮点数表示法利用科学计数法来表达实数。通常,将浮点数表示为 ± d.dd…d ×βe,其中d.dd… d 称为有效数字(significand),它具有 p 个数字(称p位有效数字精度),β为基数(Base),e为指数(Exponent),±表示实数的正负[1,2]。更精确地,± d0.d1d2…dp-1 × βe, 表示以下数±(d0+d1β-1+… +dp-1β-(p-1))βe,(0≤di<β)。 对实数的浮点表示仅作如上的规定是不够的,因为同一实数的浮点表示还不是唯一的。例如,1.0×102 ,0.1 ×103 ,和0.01 ×104 都可以表示100.0。为了达到表示单一性的目的,有必要对其作进一步的规范。规定有效数字的最高位(即前导有效位)必须非零,即0<d0<β。符合该标准的数称为规格化数(Normalized Numbers),否则称为非规格化数(Denormalized Numbers)。 2 IEEE 754浮点数与其浮点格式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 格式和语言类型