【问题标题】:What is the logic behind this binary adder question?这个二进制加法器问题背后的逻辑是什么?
【发布时间】:2021-03-24 06:28:59
【问题描述】:

我正在为即将到来的考试而学习,并在指南中找到了这个问题:

假设使用 8 位二进制加法器进行二进制补码编码,FF 和 01(十六进制)相加的结果是什么?

选项是(我只能选择一个):

1. 0 (In decimal)
2. 100 (In hexadecimal)
3. Cannot represent result due to bit overflow
4. 256 (in decimal)

我的逻辑告诉我 2 和 4 都是正确的,因为操作会导致添加

  1111 1111
  0000 0001
  ---------
1 0000 0000

十进制的 256 或十六进制的 100,但正确答案是 1. 0(十进制),他们是如何得出这个结论的,最后的进位位是否完全被忽略了?如果是那为什么不会导致溢出呢?

【问题讨论】:

    标签: binary hex twos-complement


    【解决方案1】:

    我认为“溢出”通常是根据结果是否有意义来定义的,而不是在过程中是否有一些位碰巧掉出边缘。

    您将 1 添加到 -1,结果为 0。一切都在范围内;没有溢出。

    如果您添加 127 和 1,则会出现溢出。这应该产生 128,但由于我们处理的是 8 位二进制补码,因此您将得到 -128。 会溢出。

    题外话:有人可能会争辩说这个问题提出的很糟糕,因为数字 FF(十进制 255)不能用 8 位二进制补码表示,其中范围是 -128 到 127(含)。然而,十六进制数字用于显示位模式是很常见的,而不管这些位模式的实际含义是什么,而“所有位设置”的位模式意味着 -1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      • 1970-01-01
      • 2020-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多