首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >浮点加法说明

浮点加法说明
EN

Stack Overflow用户
提问于 2012-08-28 01:15:42
回答 2查看 1.8K关注 0票数 0

我正在学习浮点加法,我对其中的一部分感到相当困惑。我使用的例子是这样的:

(假设8位机器,指数超过-3)

代码语言:javascript
运行
复制
x = 6.75 = 01011011
y = -10 = 11100100

非正规化和使用相同的指数给出:

代码语言:javascript
运行
复制
x = 1.1011 x 2^2 = 0.1101 x 2^3
y = -1.0100 x 2^3

加上/减去尾数:

代码语言:javascript
运行
复制
01101 + -10100 = -00111

我不太明白为什么01101 + -10100 = -00111。有人能给我解释一下吗?

EN

回答 2

Stack Overflow用户

发布于 2012-08-28 01:35:53

解释它的最简单的方法是将它们转换为十进制。

代码语言:javascript
运行
复制
+01101 (base 2) = +13 (base 10)
-10100 (base 2) = -20 (base 10)

-20 + 13 = -7

-7 (base 10) = -00111 (base 2)
票数 2
EN

Stack Overflow用户

发布于 2012-08-28 01:36:08

首先,当我在非十进制的基础上做简单的数学计算时,我发现偶尔将其转换回十进制是有用的,以了解发生了什么。

所以,首先,将这些数字相加,我们就会得到

代码语言:javascript
运行
复制
6.75 - 10.0 = -3.25

或者在二进制中,不要太担心指数,因为它们是相同的幂

代码语言:javascript
运行
复制
01101 - 10100 = -00111

手动执行此操作的最佳方法是查找

代码语言:javascript
运行
复制
 10100
-01101

使用正常的加法规则,然后反转结果。简要地说:

从最左边的1处借用,以执行减法:

代码语言:javascript
运行
复制
 02100
-01101
 _____
 00111

由于最右侧底部列中的1,我们需要再次借用,类似于以十进制数执行。

现在,让我们仔细检查一下这个结果到底是什么:

代码语言:javascript
运行
复制
-0.0111_2 * 2 ^ 3

实际上是-3.5!这是因为将1.1011 x 2^2视为0.1101 x 2^3而不是其实际值.11011 x 2^3而导致的精度损失。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12146443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档