超详细的IEEE标准下的浮点数规则,附实例和规则总结

浮点数的历史

浮点数表示的有理数进行编码。它对执行涉及非常大的数字,非常接近0的数字,以及作为实数运算的近似值的计算,都有着非常大的作用。

直到20世纪80年代,每个计算机的制造商都制造出了自己的浮点数规则,以及对浮点数执行运算的细节。另外,他们常常不会关注于浮点数计算的准确性,而把实现的快速和简便看得比精确性更重要。

大约在1985年,这些情况随着IEEE标准754的推出而改变了,这是一个仔细制定的表示浮点数及其运算的标准。这项工作是从1976年开始由Inter赞助的,与8087的设计同时执行,8087是一种8086提供浮点数支持的芯片。是由William Kahan作为顾问制定的,Kahan加入了一个IEEE资助的制定工业标准的委员会。最终Inter选用了无比接近Kahan标准作为了自己浮点数的标准。

IEEE(电气和电子工程师协会)是一个包括所有电子和计算机技术的专业团体。它出版刊物,举办会议,并且建立委员会来定义标准,内容涉及从电力传输到软件工程。另一个IEEE标准的例子是无线网络的802.11标准。

目录

  • 二进制的小数
  • IEEE浮点数表示
  • 数字示例
  • 舍入
  • 浮点运算
  • C语言中的浮点数
  • 小结

二进制的小数

形如,b的取值范围是0和1,这种表示方法下数b的定义如下:

例如101.11表示数4+1+0.5+0.25=5.75

将小数点向左移1位,意味着将数除以2,将小数点向右移一位,表示将数乘2。

IEEE浮点数表示

上面我们谈到的定点表示法,不能很有效的表示数字。比如说,我们要表示5*2^100是101后面跟随100个0的位模式来表示的,这样是很不便的。相反,我们希望能够给定x和y来表示x*2^y。

IEEE浮点数标准用的形式来表达一个数。

  • 符号    s决定这数是负数(s=1),还是正数(s=0),而对于数值0的符号位解释作为特殊情况来处理。
  • 尾数    M是一个二进制小数,它的范围是1~2-ε,或者是0~1-ε
  • 阶码    E的作用是对浮点数加权,这个权重是2^E

将浮点数的位表示划分为3个字段,分别对这些字段进行编码:

  • 一个单独的符号位s直接编码符号s
  • k位的阶码字段exp=编码阶码E
  • n位的小数字段frac=编码尾数M,但是编码出来的值也依赖于阶码的值是否等于0

对于单精度的浮点数,s,exp,frac三段分别为1位&

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值