希赛考试网
首页 > 软考 > 软件设计师

浮点数怎么算出来的

希赛网 2023-11-17 17:33:00

浮点数是计算机科学中的一种数据类型,用于存储实数,即小数。而计算机处理数据时,通常使用二进制形式。因此,浮点数也是以二进制形式存储和计算的。本文将从多个角度分析浮点数是怎么计算出来的。

一、浮点数的存储方式

在计算机中,浮点数由三部分组成:符号位、指数和尾数。其中符号位用一位二进制数表示正负性,0代表正数,1代表负数。指数用固定的位数来表示,它与尾数一起决定了浮点数的大小和精度。尾数也有固定的位数,表示小数部分。因此,浮点数的存储方式为:一个数符位、多个数值位。

二、浮点数的计算

在计算机中,浮点数的计算也遵循相应的规则。浮点数的加减法和十进制中的加减法很相似,只是需要考虑到指数的影响。而乘法和除法则更为繁琐,需要涉及到浮点数的规格化、舍入等概念。

1、加减法

在浮点数的加减法计算中,需要先进行尾数对齐,即比较两个浮点数的指数,将小指数的浮点数的尾数右移,直到两个尾数对齐。然后,根据符号进行相加或相减,再进行规格化处理。

例如:计算0.4 + 0.3,按照规格化后的尾数进行加法操作。0.4的二进制表示为0.011001100110011...(无限循环),0.3的二进制表示为0.010011001100110...(无限循环),因此先将小数尾数右移一位,得到0.011001100110011...和0.010011001100110...,再将它们相加,得到0.101001100110011...(无限循环)。由于计算机的存储空间有限,故需进行规格化处理,即将开头的1移到小数点前面,得到1.01001100110011...×2^-1,即0.7。

2、乘法

乘法的计算过程比较繁琐,需要考虑指数和尾数的规格化,以及舍入等问题。其具体步骤如下:

(1)将两个浮点数的尾数相乘,得到新的尾数;

(2)将两个浮点数的指数相加,再减去一个固定的偏移量,得到新的指数;

(3)对尾数进行规格化处理,即将开头的1移到小数点前面;

(4)判断尾数的大小,如果尾数大于或等于2,则需要舍去整数部分,将尾数右移,并对指数自加;

(5)将尾数和指数合并,得到新的浮点数。

例如:计算0.5×0.2,按照上述步骤进行计算。0.5的二进制表示为0.1,指数为0;0.2的二进制表示为0.001100110011...(无限循环),指数为-2。首先,将它们的尾数相乘,得到0.000110011001100...(无限循环),接着将它们的指数相加并减去偏移量(偏移量为32),得到新的指数-33。然后,对尾数进行规格化处理,即将开头的1移到小数点前面,得到1.100110011...×2^-19。由于尾数大于等于2^-1,需将尾数和指数合并,并将尾数右移1位,得到1.001100110...×2^-18,即0.1。

3、除法

除法的计算过程与乘法类似,也需要考虑指数和尾数的规格化和舍入等。其具体步骤如下:

(1)将两个浮点数的尾数相除,得到新的尾数;

(2)将两个浮点数的指数相减,并加上一个固定的偏移量,得到新的指数;

(3)对尾数进行规格化处理;

(4)判断尾数是否小于1,如果小于1,则需将尾数左移,指数自减。

例如:计算0.5÷0.2,按照上述步骤进行计算。0.5的二进制表示为0.1,指数为0;0.2的二进制表示为0.001100110011...(无限循环),指数为-2。首先,将它们的尾数相除,得到2.5。接着,将它们的指数相减并加上偏移量(偏移量为32),得到新的指数30。然后,对尾数进行规格化处理,即将小数点左移两位,得到0.100110011...。由于尾数小于1,需将尾数和指数合并,并将尾数左移一位,得到1.001100110...×2^-31,即1.9073486×10^-7。

三、浮点数运算的精度问题

由于计算机内部使用二进制表示小数,因此有些十进制小数无法转化为二进制小数,以及由于计算机的存储和运算精度问题,使得浮点数计算往往会出现一些误差。这些误差可能会对计算结果产生较大的影响。

举个例子:计算0.1+0.2的结果时,按照前述步骤,需将0.1和0.2转化为二进制数(0.0(0011)和0.001(1001)1001100...),再进行相加运算。结果应为0.3,但由于浮点数计算的精度问题,实际结果往往会偏离这个值。在Java中,可以使用BigDecimal类进行高精度计算,避免浮点数计算的精度问题。

微信扫一扫,领取最新备考资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考报考咨询

微信扫一扫,定制学习计划