IEEE标准浮点数的表示 X页.docIEEE754标准非常实用IEEE754代码标准表示法为便于软件的移植,浮点数的表示格式应该有统一标准(定义)。1985年IEEE(InstituteofElectricalandElectronicsEngineers)提出了IEEE754标准。该标准规定基数为2,阶码EH]移码表示,尾数M用原码表示,根据二进制的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的多一位。实数的TEEE754标准的浮点数格式为:具体有三种形式:IEEE754三种浮点数的格式参数类型存储位数偏移值数符(s)阶码(E)尾数(M)总位数十六进制十进制短实数(Single,Float)1位8位23位32位0x7FII+127长实数(Double)1位11位52位64位0x3FFH+1023临时实数(延伸双耕确度,不常用)1位15位64位80位0x3FFFII+16383对于阶码为0或为255(2047)的情况,IEEE有特殊的规定:如果〃是0并且〃是0,这个数±0(和符号位相关)如果E=2—1并且必是0,这个数是土无穷大(同样和符号位相关)如果E=2-1并且必菲0,这个数表示为不是一个数(NaN)。标准浮点数的存储在尾数屮隐含存储着一个1,因此在计算尾数的真值时比一般形式要多一个整数lo对于阶码E的存储形式因为是127的偏移,所以在计算其移码时与人们熟悉的128偏移不一样,正数的值比用128偏移求得的少1,负数的值多1,为避免计算错误,方便理解,常将E半成二进制真值进行存储。例如:将数值-,先将-:-0・5(10进制)二-(2进制)=--1(2进制,-1是指数),这里s二1,M为全0,E-127二-1,E二126(10进制)=01111110(2进制),则存储形式为:101111110000000000000000000000000=BF000000(16进制)这里不同的下标代表不同的进制。从二进制到浮点数的计算公式F二1・M(二进制)在单精度时:V二(-1厂s*2八(E-127)*!7在双精度时:V二(-1厂s*2"(E-1023)*FVB中的浮点数二进制化函数API:PublicDeclareSubCopyMemoryLib//kernel32,/Alias"Rt1MoveMemory"(DestinationAsAny,SourceAsAny,ByVaiLengthAsLong)函数:PublicFunctionGetDoubleBinary(ddAsDouble)AsStringDimb(0To7)AsByteDimsAsStringCopyMemoryb(0),dd,8Forj=7To0Step-1Fori=7To0Step-1s二s&Ilf((b(j)And(2八i))>0,〃1〃,〃0〃)'以下添加分割符SeiectCasej*8+iCase63Case52s=s&〃丨〃EndSeiectNextNextGetDoubleBinary二sEndFunctionPublicFunctionGetSingleBinary(ssAsSingle)AsStringDimb(0To3)AsByteDimsAsStringCopyMemoryb(0),ss,4
IEEE标准浮点数的表示 X页 来自淘豆网www.taodocs.com转载请标明出处.