IEEE 754标准浮点数相加实例

tech2022-09-15  89

浮点数运算还是以了解为主~

直接先来看一个例子: 规定浮点数的符号位为1位,指数位为3位,尾数位为4位,现有两个浮点数:1.25和13.5 1.25浮点数表示为二进制格式:0 011 0100 13.5浮点数表示为二进制格式:0 110 1011

小小验算一下: 0 011 0100表示一个正数,指数位为3(偏置bisas=3),故实际exp为0,1.0100 * 20 = 1.25 0 110 1011表示一个正数,指数位为6,减去偏置得到实际exp=3,1.1011 * 23 = 1101.1=13.5

现在要计算1.25+13.5,可按以下步骤计算:

一. 对阶

首先,指数位要相同才可进行尾数位的相加。指数位的相同可通过Δ来调节,其中Δ=|exp-exp|。1.25和13.5的Δ为|110-011| = |6-3| = 3,将1.25(0 011 0100)的指数位加3,同时将尾数位右移3位,得到(0 110 0000,这个时候会发生舍入)。

为什么不是把13.5的阶码110变为011?如果由110变为011,则13.5的尾数部分就需要左移,而左移的对象几乎包含所有高位,相较于右移包含低位,对浮点运算的影响更大。

二. 尾数加减运算

现在1.25表示为0 110 0000(尽管不精确,因为现在位数较少)        13.5表示为0 110 1011

尾数运算: 相加后得到的结果是:0 110 1011

这个结果转化为十进制就是:1.1011 * 23 = 1101.1,也就是13.5,这个数值是对的吗?从运算规则来说,是对的,只是因为现在只有8位表示,所以不能很精确地进行浮点运算。

三. 运算结果规格化

由于现在得到的浮点结果就是规格化数,所以此步不需要进行任何操作。

四. 舍入处理

一般计算机采用先偶数舍入(也称向最接近的值舍入),在我们这个例子中,1.25(0 011 0100)尾数部分右移3位,理论结果为0000100,舍入为4位时,看第5位(为1),这个时候遵循先偶数舍入的原则,确定前四位,也就是位数部分为:0000

五. 溢出判断

这次运算并没有发生溢出,因此这一步也是不需要进行任何操作的。

以上就是浮点相加的一个实例,参考自:浮点数的加减法运算——百度文库

最新回复(0)