我使用 4、1 位全加器构建了一个四位加法器/减法器,输入和输出是二进制补码。
如果X=0111 and Y=1000
它们的总和显然是 1111。
在十进制中,这相当于 7 + 8 因此 15 这是总和的结果。
但是,我很困惑,如果这个结果需要通过翻转位并加一个来转换回“常规”二进制文件?所以答案将是 0001 代表十进制的 1。翻译前的十进制 Y 实际上是 0110 代表 6 从而产生以下二进制7-6 = 1
。如果有人能指出我正确的方向,我将不胜感激!
我使用 4、1 位全加器构建了一个四位加法器/减法器,输入和输出是二进制补码。
如果X=0111 and Y=1000
它们的总和显然是 1111。
在十进制中,这相当于 7 + 8 因此 15 这是总和的结果。
但是,我很困惑,如果这个结果需要通过翻转位并加一个来转换回“常规”二进制文件?所以答案将是 0001 代表十进制的 1。翻译前的十进制 Y 实际上是 0110 代表 6 从而产生以下二进制7-6 = 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。