我需要使用门电路创建一个 2 的补码来签名二进制转换器。我可以使用哪些逻辑门?
您可以使用非门来切换输入位以获得 1 的补码。然后将每个非门的输出放入其他“2 输入异或门”的输入。
因此,如果您有 N 个输入,那么您需要 N 个非门和 N 个异或门,其中非门的输出到异或门的输入之一。并将 1(高电压/低电压,无论您使用什么来表示 1)放入异或门的另一个输入,其中放置最低有效输入位的切换输出。然后将此异或门的输出放入第二个异或门,其中放置第二个最低有效输入位的切换输出。通过这种方式,您可以将第 (N-1) 个异或门的输出放到第 N 个异或门的输入中。
最后,当您从异或门的输出中获取输出时,您将找到输入数字的 2 的补码。
之前的答案部分不正确。 使用 not 门来获得 1 的补码是正确的,但要获得 2 的补码,您需要求和并进位。 求和由异或门执行,进位由与门执行。 每个位都需要一个非门、一个异或门和一个与门。 将每条数据线连接到非门(执行 1 的补码) 将每个 XOR 的一个输入连接到每个 AND 的一个输入。从现在开始,我将其称为 input1。 将每个 XOR 的另一个输入连接到每个 AND 的另一个输入。从现在开始,我将其称为 input2。 将每个 NOT 输出连接到其相应的输入 1。 将较低有效位的输入 2 连接到 VCC(逻辑电平 1)。 将较低有效位与门的输出连接到第二个较低有效位的输入 2。 (进行进位) 对所有门重复最后一步。 (级联进位) 保持最后一个 AND 输出未连接(实际上您不需要最后一个 AND) 数据的 2 补码可以从异或门的输出中提取。
我相信您可以仅使用异或门来实现任何算法。去吧。