其他分享
首页 > 其他分享> > 计算机组成与设计-浮点数

计算机组成与设计-浮点数

作者:互联网

引言

日常计数中我们常用科学计数法来表示一些比较大或特别小的数字,例如3.15576×109。归一化科学计数法表示不以0开头的科学计数法,即小数点前一位不能为0。

而对于计算机来说要用二进制来表示这样的数字,也就产生了浮点数。浮点表示其二进制点不固定。在C语言中关键字float代表了这一数据类型。

  

表示方法

MIPS指令集架构中,浮点数表示方法如下图所示:

 

上图代表单精度浮点数。1bit的符号位;8bit的指数位,代表数字的范围大小;23位的分数位,即代表0~1之间的数字,代表数字的精度。

当然也有双精度浮点数,即C语言中的double关键字表示的数据类型。MIPS用两个字来表示一个双精度数据:

 

这里指数位扩展到11bit,范围扩大了一些;而分数位扩大到了52bit,因此精度更高,数据的准确程度更高。

Biased Notation

 

浮点数的指数部分有正有负,如果用补码进行表示就会出现矛盾。1/2即2-1被表示为11111111,而2即21被表示为 00000001,如果进行整数比较(因为用高位进行比较能节约硬件资源和计算时间,首先比较符号位,再是表示范围的指数部分)就会出现1/2比2大的情况,而这明显是错误的。

因此以一种偏置法对指数进行表示:

对于单精度浮点数,指数部分长度为8bit,表示范围为:-127~128,因此偏置为127。新的表示方法如下:

这样1/2表示为2-1=2126-127,指数部分为0111 1110;2表示为2128-127,指数部分为1000000;就能够正确得比较大小了。

隐含的1

需要注意的是:以归一化科学计数法表示的浮点数都是1. 几的模式表示,因此小数点前的1可以隐含,使得分数位可以扩大一位的精度。即significant就是分数位的具体数值,不需要考虑leading1。

0与特殊数字的表示

 目前仅考虑了指数为1~254范围,分数位为任意数据的情况,事实上还有几类数据没有深入考虑:

 

浮点数运算

 浮点数加法的流程如下图所示:

 

参考资料:

1. Computer Organization and Design The Hardware/Software Interface. (Fifth edition)

2. 国立清华大学资讯工程学系课件

标签:表示,分数,计算机,指数,浮点数,计数法,设计,位为
来源: https://www.cnblogs.com/Achilles7/p/15920693.html