@pearl3344
2018-02-24T04:41:40.000000Z
字数 2982
阅读 1175
浮点数
IEEE standard 754-2008
b=2 基数radius
k=32=1+w+t 机器存储长度
s=0,1 符合部分的位数1,取值0或1,表示负数正数
w=8 指数部分的位数
e: 指数exponent
E 指数部分表示的整数 biased exponent.
t=23 有效数字的小数部分的位数 the number of digints in the trailing significand (precision).
p=t+1=24 有效数字的位数 the number of digits in the significand (precision),包括一个隐含首位 the leading bit of the significand is implicitly encode in the biased exponent E.
m: 有效数字mantissa, significand (in scientific form) 1.xxxx 或者0.xxx
T 有效数字的小数点后面部分trailing significand field digit string 如果表示成整数
指数部分E有8位可以表示2^8=256个数,有不同的定义:
最小的非0 .
指数部分w位,可表示个整数,除去全0全1两个,剩下的分成两波: 正数、负数和0。可以得到 the minimum exponent, the maximum exponent.
E=,
e=E-bias =,
overflow: 能表示的最大数the largest floating-point number
机器能准确表示的浮点数是离散的有限的,称这些能被准确表示的数叫machine number。
当实数x不能被机器准确表示时,用machine number近似表示fl(x)。 将实数近似成浮点数会造成误差rounding error, roundoff error。
unit roundoff, machine precision, machine epsilon定义了一个浮点数系统表示任意非0实数可能的相对误差的上界maximum relative error。“相对”误差,因为浮点数不是均匀分布的,有效数字部分还要乘以指数部分。
round toward zero (chop):直接截断,
如果t=2,0.751=0.5+0.25+0.001将直接表示成0.5+0.25=0.75.
round to nearest (even): 用最近的fl(x)近似x,如果正好在两个machine number正中间,用末尾为偶数的那个。这种近似方法误差更小。IEEE 默认是这种。
能表示的最小绝对值数, smallest subnormal magnitude
subnormal浮点数
normal浮点数
当w=3,,
当t=4,
这些整数倍数仅仅包括 16-31
2(16-31),4(16-31),8(16-31),16(16-31),32(16-31)
17、19、21、23、25、27....这些倍数的 仍然无法用machine number精确表示。
normal浮点数
如果e=-1, T=13,则是0.5*(16+13)= 14.5倍的, 会表示成14倍的,让T=12.
如果e=-2, T=13,则是0.25*(16+13)=7.25倍的, 会表示成7倍的, 7=0.25*(16+8)让T=8.