浮点数在计算机中的编码

本文介绍了浮点数在计算机中的编码,包括浮点数的历史、IEEE 754标准的引入以及浮点数的三种表示形式:规格化值、非规格化值和特殊值。详细阐述了在单精度和双精度中的位分配,并通过实例展示了浮点数的具体计算过程。
摘要由CSDN通过智能技术生成

浮点数在计算机中的编码

 

我们知道整数在计算机中的编码,源码,补码,反码等等,利用二进制的数表示一个整数,比如,32可以表示成“100000”,但是对于浮点数的编码,一般的教材介绍的很少,这里做了一点资料整理,希望对大家有用。

1、历史

浮点表示对形如的有理数进行编码。它对执行涉及非常大的数字(|V|>>0)、非常接近于0(|V|<<1)的数字,以及更普遍的作为实数运算的近似值的计算,是很有用的。

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

大约在1985年,这些情况随着IEEE标准754的推出而改变了,这是一个仔细定制的表示浮点数及其运算的标准。这项工作是从1976年开始由Intel赞助的,在8087设计的同时,8087是作为一种为8086处理器提供浮点支持的芯片。他们请William Kahan(加州大学伯克利分校的一名教授)作为顾问,帮助设计未来处理器的浮点标准。他们支持Kahan加入一个IEEE资助的制定工业标准的委员会。这个委员会最终采纳的标准非常接近于Kahan为Intel设计的标准。目前,实际上所有的计算机都支持这个后来被称为IEEE浮点的标准。这大大提高了科学应用程序在不同机器上的可移植性。

题外话:这里也是看出来Intel的人有着一般人没有的前瞻性,果然,大公司还是大公司

2、IEEE浮点表示

IEEE浮点标准使用的形式来表示一个数:

符号(sign):s决定这个数是负数(s=1)还是正数(s=0),而对于数值0的符号位解释做特殊情况处理。

尾数(significand):M是一个二进制小数,它的范围是,或者是。

阶码(exponent):E的作用是对浮点数加权,这个权重是2的E次冪(可能是负数)。

在C语言中浮点数包括单精度浮点数(float)、双精度浮点数(double),分别占有32位和64位,对于float而言,符号位用1位表示,尾数M用8位表示,阶码E用23位表示。而对于double而言,符号位1位,尾数11位,阶码52位,具体表示如下图所示。

单精度

31 30                23 22                                      0

    s  

        exp       

                    frac                    

 

双精度和单精度类似,这里不做描述。

题外知识:

(float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值