这个二进制加法器问题背后的逻辑是什么?

What is the logic behind this binary adder question?

我正在为即将到来的考试复习,在指南中发现了这个问题:

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

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

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(十进制),他们是怎么得出这个结论的,最后的进位位是不是完全忽略了?如果是那么为什么它不会导致溢出?

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

你在-1上加上1,结果是0。一切都在范围内;没有溢出。

如果你加上 127 和 1 就会溢出。应该 产生 128,但由于我们处理的是 8 位二进制补码,你会得到-128 代替。 那个会溢出。

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