执行浮点二进制数的加法时,通常会更改较小的指数以匹配较大的指数,然后相应地调整尾数。一旦尾蝠对齐,它们可以加在一起。然后在必要时对结果进行标准化。
为什么我们通常会调整较小的指数以匹配较大的指数?什么不相反?当手动执行这些计算时,无论采用何种方法,结果都是相同的。
答案 0 :(得分:2)
当添加具有相同符号的数字(或减去具有相反符号的数字)时,结果具有与较大操作数相同的指数或一个(根据是否发生进位)。因此,如果调整较小的数字以匹配较大的数字,则可以做更少的转移。
通过减去具有相同符号的数字(或添加相反符号的数字),取消可以将前导数字保留在各种位置,因此选择之间的差异可能较小。但是,如果调整较小的数字以匹配较大的数字,则仅需要在一个方向上移位。如果调整幅度较大,则需要做出额外决定,以确定需要转换的方向。
答案 1 :(得分:1)
为什么我们通常会调整较小的指数以匹配较大的指数?
调整较大的值可能比调整较大的值要少,因为可以通过调整较小的值进行简化。
“然后相应地调整尾数”比只有一个班次更多。
考虑使用a,b
位有效数和n
加上/减去规范化 expo(a) >= expo(b)
。
使用n
有效位的所有a
位。
b
的指数与较大的a
相同,而较小的b
有效数字会被移位,但可能并非全部都被明确记住。除了与b
保持对齐的a
位之外,还会记住2个移出的位,并且所有其他位的“或”移出。
示例,b
移位(右)n-6
个位置。
1.23456789….......n
a.aaaaaaaa…aaaaaaaa 000
0.00000000…00bbbbbb bbz (z is the “or” of all the less significant bits)
现在可以使用n+3+1
1 位数学运算来执行加法/减法。在所有舍入模式下,2个移出的位和z
足以形成预期的和/差。
1 +1溢出。
如果没有这种简化,则需要比n+3
位整数数学宽得多的数学。甚至可能是100多位。
示例,a
移位(左)n-6
个位置。
aa aaaaaaaa a.aaaaaa00…00000000
b.bbbbbbbb…bbbbbbbb