Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Floating point 浮点加减法_Floating Point - Fatal编程技术网

Floating point 浮点加减法

Floating point 浮点加减法,floating-point,Floating Point,执行浮点二进制数加法时,通常会更改较小的指数以匹配较大的指数,然后相应地调整尾数。尾数对齐后,可以将它们相加。然后,如有必要,对结果进行归一化处理 为什么我们通常会调整较小的指数以匹配较大的指数?什么不是反过来?手动执行这些计算时,无论采用何种方法,结果都是相同的。当添加具有相同符号的数字(或减去具有相反符号的数字)时,结果与较大的操作数或一个以上的操作数具有相同的指数(根据是否发生进位)。因此,如果调整较小的数字以匹配较大的数字,则需要进行的移位较少 使用相同符号的数字减法(或相反符号的数字相

执行浮点二进制数加法时,通常会更改较小的指数以匹配较大的指数,然后相应地调整尾数。尾数对齐后,可以将它们相加。然后,如有必要,对结果进行归一化处理


为什么我们通常会调整较小的指数以匹配较大的指数?什么不是反过来?手动执行这些计算时,无论采用何种方法,结果都是相同的。

当添加具有相同符号的数字(或减去具有相反符号的数字)时,结果与较大的操作数或一个以上的操作数具有相同的指数(根据是否发生进位)。因此,如果调整较小的数字以匹配较大的数字,则需要进行的移位较少

使用相同符号的数字减法(或相反符号的数字相加),取消可以将前导数字保留在不同的位置,因此选择之间的差异可能较小。但是,如果调整较小的数字以匹配较大的数字,则只需要在一个方向上移动。如果调整了较大值,则需要另外决定需要向哪个方向移动

为什么我们通常会调整较小的指数以匹配较大的指数

这可能比调整较大的值要省力,因为可以简化调整较小的值


“然后相应地调整尾数”不仅仅是一个移位

考虑使用
n
位有效位和
expo(a)>=expo(b)
对规范化
a、b
进行加减

使用
a
的有效位的所有
n

b
的指数与较大的
a
的指数相同,较小的
b
有效位移位,但可能并非所有有效位都被明确记住。除了保持与
a
对齐的
b
位外,还将记住2个移出位,并将所有其他位的“或”移出

例如,
b
shift(right)
n-6
places

1.23456789….......n 
a.aaaaaaaa…aaaaaaaa 000
0.00000000…00bbbbbb bbz (z is the “or” of all the less significant bits)
aa aaaaaaaa a.aaaaaa00…00000000
            b.bbbbbbbb…bbbbbbbb
现在,可以使用
n+3+1
1位数学进行加法/减法运算。在所有舍入模式下,2个移出位和
z
足以形成预期的和/差

1+1表示溢出


如果不进行这种简化,则需要比
n+3
位更宽的整数数学。甚至可能有100个比特

例如,
a
移位(左)
n-6
位置

1.23456789….......n 
a.aaaaaaaa…aaaaaaaa 000
0.00000000…00bbbbbb bbz (z is the “or” of all the less significant bits)
aa aaaaaaaa a.aaaaaa00…00000000
            b.bbbbbbbb…bbbbbbbb