浮点除法和乘法。如何获得生成的尾数?

时间:2018-02-09 01:58:07

标签: math binary floating-point division multiplying

我知道如何在二进制中添加或减去浮点数。对于乘法和除法,我必须乘以/除以尾数并加上/减去指数。

但这是我不明白的事情。 Mantissas是分数,我只学会了如何乘以和除以整数。什么规则适用于mantissas算术?我已经看到了一些例子,其中乘法尾数被视为整数,但是,对于除法,其余部分会发生什么? 有人可以举一个尾数除法的例子吗?

1 个答案:

答案 0 :(得分:0)

(首选术语是“有效数字”。“尾数”是从对数纸张表日起的遗留术语。)

添加三位有效数字的示例:

 1.01
+1.11
_____
11.00
Result >= 10.00, so shift to 1.100, round to 1.10, and add one to exponent.

 1.00
+1.11
_____
10.11
Result >= 10.00, so shift to 1.011, round to 1.10, and add one to exponent.

减去三位有效数字的示例:

 1.01
-1.10
Note the latter value is larger in magnitude, so swap
them and remember to invert the sign of the result later.
 1.10
-1.01
_____
 0.01
Result < 1.00, so shift to 1.00 and subtract two from exponent.

乘以三位有效数字的示例:

   1.01
  *1.10
_______
  .0000
  .101
+1.01
_______
 1.1110
Result is in range, so do not shift. Rounding
requires rounding up, producing 10.0, which is
>= 10.0, so shift to 1.00 and add one to exponent.

请注意,在这些示例中,添加和减去的数字的有效数已经对齐。当添加的数字的指数相等时,就会发生这种情况。如果不是,则必须移动其中一个数字使其指数等于另一个数,然后可以加上或减去有效数。

分工是在学校学到的同样长的分工完成的。你根据需要为你的有效数字执行除数,然后你用剩下的数字来决定是向上还是向下舍入。