zoukankan      html  css  js  c++  java
  • IEEE754浮点表示

    执行IEEE754标准

    bmbm−1 . . . b1b0.b−1b−2 . . .bn−1bn表示:

     

     

    将小数点右移近似相当于乘2,小数点左移近似相当于除2

    系统每隔0.1s计数器加一(系统最后计时以计数值乘以系统认为的0.1s二进制值),0.1D=0.000110011[0011]……B,我们只取小数点后23 x=0.00011001100110011001100,那么我们可以算出0.1-x的二进制表示值所对应的十进制表示值。假设系统运行了100小时,那么我们可以得到真实时间差100小时与系统记录时间的差值,导弹飞行2000m/s,那么当我们认为100小时后即可集中目标时的距离偏差就很大了。

     s是符号位,s=1是负数,s=0是正数;有效数字M是二进制值,范围为[1,2)或者[0,1),E是以2的多少次方来衡量该数。

    对于以上的表示法只是我们一般上类似于10进制的科学计数法,但是真正的在内存中的二进制如下:

    1-  bit符号域编码符号位s,k-bits指数域exp编码指数位E,n-bits部分域frac编码有效数字M。对于float型:k=8,n=23共24位;对于double型:k=11,n=52共64位。

     

    二进制表示的值可分为三类情形:

    1.Normalized value

    exp不是全0,也不是全1。

     

    exp被当成无符号值,exp是基于原来的值E加上一个偏移量bias(bias=2^(k-1)-1,对于float而言即为127,对于double而言即为1023,因此E=exp-bias注意:exp是无符号的,bias是有符号的,E是有符号的)。

    部分域frac的范围是[0,1),而实际M=1+f(M范围是[1,2))。也就是对于正规值,其前导1默认被隐藏。

     

    2.Denormalized Values

    exp=0,E=1-bias(bias=2^(k-1)-1),M=f

    对于-0.0与+0.0其指示符号位不同,但是在IEEE754对于0的这两种有不同的意义。

     

    3.Special Values

    exp全1.frac全1时,若s=0,则表示正无穷,若s=1,则表示负无穷。无穷也可用来表示溢出,或除数为0的结果。frac非0时表示NaN

     

    看个例子

    从图中可以看到最大的非正规化数字是7/512,最小的正规化数字是8/512,之所以有着良好的过渡性是因为我们规定了对于非正规化数字exp=0,且E=1-bias。

     

    下图显示s=1,k=4,n=3所能表示的所有实数的相应分数形式,另附上无符号数值和有符号数值。

     

    可以观察+0,-0,非正规化最小正负数(绝对值),非正规化最大正负数(绝对值),正规化最小正负数(绝对值),正规化最大正负数(绝对值),特殊值集合。

    此外按照浮点数从小到达排序(非为正值和负值),正值一类无从有符号还是无符号整数观点看待都是从小到达排序。负值一类当用有符号整数观点看待时浮点数从小到达排序则相应有符号正数从大到小排序,当用无符号观点看待时浮点数从小到达排序则无符号数从大到小排序。当按有符号整数排序时,负浮点数的相应整型小于正浮点数的相应整型,当按无符号整数排序时,负浮点数的相应整形大于正浮点数的相应整型,但是有一点请注意,+0与-0的整形表示。

    rounding 操作

    rounding to even

    对于飞中间数字情形,只需按四舍五入即可,但是若是遇到中间数则向偶取数

    XX . . . X.Y Y . . . Y 100 . . .我们所需的有效数字一直取至数字中的Y所有为,只有在这种数字情形下我们才需要考虑如何取数,因为Y最右边的数字的右边全是0,否则只需按四舍五入即可。round 10.000112  down to 10.002 (2),

    10.001102  up to 10.012  、 round 10.111002  up to 11.002   、10.101002   down to 10.102 。

    rounding toward-zero

    rounding down

    rounding up

    注意浮点运算的结合性,精度要求,当遇到细节问题(莫名奇妙的错误)时可以看看书本的2.4.5 Floating-Point Operation

  • 相关阅读:
    面试题目小结
    面试题目3
    C#中new和override区别
    [转]:存储过程与函数的区别
    [转载]:C# 面试题大全
    [转]:C++虚函数表解析
    【修订版】C#/ASP.Net 面试题及答案(1)
    [转载]:C# 中结构与类的区别
    [转载]:C#笔试题面试题锦集
    [转载]:SQL Server性能调优之执行计划深度剖析 第一节 浅析SQL执行的过程
  • 原文地址:https://www.cnblogs.com/openix/p/2426046.html
Copyright © 2011-2022 走看看