我需要做一个减去2个数字的电路。我相信我需要使用SUM和一个符号位,以及一些掩码,但我无法弄清楚如何将它组合在一起。
[LATER EDIT]
我试图做“15-3”。
二进制中的15是1111 二进制3是0011我为符号0添加了一点+和1添加 -
所以现在我有:0 1111 + 1 0011 = 100010对此,我使用符号掩码1 0000进行异或。这是我卡住的地方。
[后来编辑]
我想我找到了另一种看问题的方法。 我将使用2个移位寄存器来加载2个数字。每个移位寄存器的输出将是执行NOR为0的NOR门的输入。(这是将0101变换为1010)然后这些门的2个输出将连接到SUM的输入。 我的问题是如何在进入SUM之前从1位转换回8位数据?
答案 0 :(得分:1)
如果您了解Two's Complement作为反转(否定)数字的方法,问题将变得更加简单。
有几种方法可以表示负数。
1)签名幅度(添加符号位)
0 0011 => 3
1 0011 => -3
2)一个补语(按位反转)
0011 => 3
1100 => -3
3)两个补语(一个补语+ 1)
0011 => 3
1100 + 1 => 1101 => -3
两个补语增加了效率,因为它删除了一个补码的重复0代码(0000 => 0和1111 => -0)。
补丁还具有可以正常添加数字的属性
15 - 3
实际执行15 + (-3)
。
要了解如何添加二进制数,请快速查看ripple adders。
首先创建一个半加法器,添加2位,生成一个和一个进位。使用半加器+ XOR门构建一个完整的加法器,A + B +进位,生成SUM和进位(全1位)。然后,您可以将这些链接在一起,形成X宽度全加器。
答案 1 :(得分:0)
半加器是由两个逻辑门构建的简单,功能数字电路的示例。半加器添加到一位二进制数(AB)。输出是两位(S)和进位(C)的总和。注意相同的两个输入如何指向两个不同的门。 enter image description here