我正在学习浮点加法,我对其中的一部分感到相当困惑。我使用的例子是这样的:
(假设8位机器,指数超过-3)
x = 6.75 = 01011011
y = -10 = 11100100
非正规化和使用相同的指数给出:
x = 1.1011 x 2^2 = 0.1101 x 2^3
y = -1.0100 x 2^3
加上/减去尾数:
01101 + -10100 = -00111
我不太明白为什么01101 + -10100 = -00111。有人能给我解释一下吗?
发布于 2012-08-27 17:35:53
解释它的最简单的方法是将它们转换为十进制。
+01101 (base 2) = +13 (base 10)
-10100 (base 2) = -20 (base 10)
-20 + 13 = -7
-7 (base 10) = -00111 (base 2)
发布于 2012-08-27 17:36:08
首先,当我在非十进制的基础上做简单的数学计算时,我发现偶尔将其转换回十进制是有用的,以了解发生了什么。
所以,首先,将这些数字相加,我们就会得到
6.75 - 10.0 = -3.25
或者在二进制中,不要太担心指数,因为它们是相同的幂
01101 - 10100 = -00111
手动执行此操作的最佳方法是查找
10100
-01101
使用正常的加法规则,然后反转结果。简要地说:
从最左边的1处借用,以执行减法:
02100
-01101
_____
00111
由于最右侧底部列中的1,我们需要再次借用,类似于以十进制数执行。
现在,让我们仔细检查一下这个结果到底是什么:
-0.0111_2 * 2 ^ 3
实际上是-3.5!这是因为将1.1011 x 2^2视为0.1101 x 2^3而不是其实际值.11011 x 2^3而导致的精度损失。
https://stackoverflow.com/questions/12146443
复制