0

我使用 4、1 位全加器构建了一个四位加法器/减法器,输入和输出是二进制补码。

如果X=0111 and Y=1000它们的总和显然是 1111。

在十进制中,这相当于 7 + 8 因此 15 这是总和的结果。

但是,我很困惑,如果这个结果需要通过翻转位并加一个来转换回“常规”二进制文件?所以答案将是 0001 代表十进制的 1。翻译前的十进制 Y 实际上是 0110 代表 6 从而产生以下二进制7-6 = 1。如果有人能指出我正确的方向,我将不胜感激!

4

1 回答 1

1

看来您的 Y 转换错误。Y = 1000 2 = -8 10

为了表示 -6,你取 0110,翻转位得到 1001 并加一,所以 Y = 1010。(如你所料,0111 + 1010 = 0001。)

要返回,翻转 1010 = 0101 的位并加一,得到 0110 = 6。

编辑以回答您的后续问题:

让:

X = 0111
Y = 1100

X + Y = 0011 (ignoring overflow)

所以无论我们添加什么,它都等于 3。我们知道 X = 7。

Y = 1100 => 0011 + 1 = (negative)0100 = -4

7 + (-4) = 3

无需翻译,只需正确表示正数和负数即可。我认为您的困惑来自这样一个事实,即我们正在“否定”负数以找到该数字的绝对值并在其前面加上一个负号,就像上面 Y 的转换一样。这是因为 2 的补码中的负数不像正数那样可读,但 0100 仍然是 +4 并且 1100 仍然是 -4。

于 2013-04-15T03:20:40.583 回答