-3

我需要做一个减去 2 个数字的电路。我相信我需要使用 SUM 和一个符号位,以及一些掩码,但我不知道如何将它们组合在一起。

[稍后编辑]

我试着做“15-3”。

二进制 15 是 1111 二进制 3 是 0011

我为 + 的符号 0 和 - 的符号添加了一点

所以现在我有:0 1111 + 1 0011 = 100010 并且对此我使用符号掩码 1 0000 进行 XOR。这就是我卡住的地方。

[甚至后来编辑]

我想我找到了另一种看待问题的方法。我将使用 2 个移位寄存器来加载 2 个数字。每个移位寄存器的输出将是 NOR 门的输入,它执行 0 的 NOR。(这是将 0101 转换为 1010)然后这些门的 2 个输出将连接到 SUM 的输入。我的问题是如何在输入 SUM 之前将 1 位数据转换回 8 位数据?

4

2 回答 2

1

如果您了解二进制补码是一种反转(否定)数字的方法,问题会变得简单得多。

有几种方法可以表示负数。

1)符号幅度(添加符号位)

0 0011 =>  3
1 0011 => -3

2)补码(按位反转)

0011 =>  3
1100 => -3

3)二进制补码(一个补码+1)

0011             =>  3
1100 + 1 => 1101 => -3

Two's Complement 提高了效率,因为它删除了 One 的补码具有的重复 0 代码(0000=>0 和 1111=>-0)。

二进制补码还具有数字可以正常相加的特性。
对于15 - 3实际执行15 + (-3)

要了解如何添加二进制数,请快速查看波纹加法器

首先创建一个半加器,将 2 位相加,生成一个和和一个进位。使用您的半加器 + XOR 门构建一个全加器,A+B+进位,生成 SUM 和进位(均为 1 位)。然后,您可以将它们链接在一起,形成一个 X 宽度的全加器。

于 2013-04-08T07:12:00.973 回答
0

半加器是由两个逻辑门构成的简单功能数字电路的一个示例。半加器加到一位二进制数 (AB)。输出是两位 (S) 和进位 (C) 的总和。请注意相同的两个输入如何被定向到两个不同的门。 在此处输入图像描述

于 2015-10-14T12:50:36.390 回答