【问题标题】:How to calculate -1.10 + 0.0110 in binary?如何以二进制计算 -1.10 + 0.0110?
【发布时间】:2020-08-22 18:14:10
【问题描述】:

我需要浮点数的二进制减法方面的帮助。我必须做 -1.10 + 0.0110。

a) 我不明白如何理解-1.10。如果有符号,则最高位必须为“1”。在这里,我不知道位数,因此我不知道 -1.10 左侧是否包含零或一。二进制前加“-”是什么意思?

b) 图片中的 1) 显示了我的减法和检查。显然,我做错了什么。如果我从左边借,我应该在被减数左边的所有位位置都有“1”-s,还是应该只取减数所需的数量?我在这里做错了什么?

c) 在 2) 中我尝试使用二进制补码。我应该补充两个数字,还是只补充减数?我应该在减法后补充它吗?我应该对齐小数点吗?我在这里做错了什么?

结果必须是 1.00,如果在机器添加 2 位后四舍五入。但无论如何我都没有得到 1.00。

你能告诉我如何计算这个特定的例子并回答 a)、b)、c) 中的问题吗?由于我的二元罪,我的数值讲座陷入停顿。

【问题讨论】:

  • 因为你得到了符号和大小形式的数字,除非你被告知要使用它,否则我会忘记 2 的补码。你能计算出 -(1.10 - 0.0110) 吗?
  • @PatriciaShanahan 是这样的。我正在努力从一个较小的数字中减去一个更大的数字。允许这样做吗?

标签: floating-point binary subtraction


【解决方案1】:

使用以 2 为底的数学:

-1.10 + 0.0110 就像-(1.10 - 0.0110)

1.10 - 0.0110

   1.10
 - 0.0110
 --------
   1.0010   

. 之后四舍五入到 2 位,1.0010 变为 1.00 或 1.01。在中途,典型的四舍五入是 even 值。

   1.00   

从一开始就应用-,最终答案:

  -1.00

浮点编码绝大多数不使用 2 的补码,而是使用带偏差指数的符号幅度。 @Patricia Shanahan

【讨论】:

  • 有人告诉我“-”由设置为“1”的高位表示。看到“-1100”可以说 1) 1100 是 12,所以数字是 -12,或者 2) 1100 是负数,所以它是 -4。如何正确读取减号以及为什么将减号与二进制数放在一起?
  • 基里尔评论混合了许多问题。首先,“为什么他们把减号和二进制数放在一起?” --> 与十进制数相同的原因:表示负值。 -12(以 10 为底)与 -1100(以 2 为底)相同。 “1100 是负数,所以它是 -4。”,您似乎想到了 4 位 2 的补码整数编码。使用浮点数,留出 2 的补码 - 此处不适用。
猜你喜欢
  • 2021-12-27
  • 1970-01-01
  • 2022-03-24
  • 1970-01-01
  • 2021-12-08
  • 2012-05-14
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
相关资源
最近更新 更多