我搜遍了 Google,可惜没有找到我所寻找的答案。
想象一下这两个二进制数:
所以要减去这两个数字,我们需要将第二个数字向右移动2位,以使指数相同。现在我们有:
现在我们的指数相同,我们应该对尾数进行减法运算,也就是说:
然后我们对结果进行归一化和舍入处理。作为人类,我们知道如何处理这个减法,但是硬件怎么做呢?它是否使用任何特殊算法将
想象一下这两个二进制数:
A = 1.0001 * e-4
B = 1.001 * e-6
所以要减去这两个数字,我们需要将第二个数字向右移动2位,以使指数相同。现在我们有:
A = 1.0001 * e-4
B = 0.001001 * e-4
现在我们的指数相同,我们应该对尾数进行减法运算,也就是说:
1.000100
- 0.001001
----------
0.111011
然后我们对结果进行归一化和舍入处理。作为人类,我们知道如何处理这个减法,但是硬件怎么做呢?它是否使用任何特殊算法将
B
数字变为负数(例如像整数一样使用 2 的补码的算法)?当我们想要执行 A+B
但 B
是一个负数时,这个问题也是有效的。
C
或C++
程序!我正在谈论从头开始使用像XOR
、AND
、NOT
等逻辑的实现... - maniliDIV
或MUL
这样的指令。已经有现有的库,请查看它们。 - Rudy Velthuis