📅  最后修改于: 2023-12-03 15:42:10.271000             🧑  作者: Mango
本题是GATE 2017 MOCK II的一道编程题,题目要求编写一个程序来模拟一个二进制数的门电路。
门电路是指由一个或多个逻辑门组成的电路,输入输出均由二进制信号表示。本题要求编写一个程序,实现以下功能:
这些逻辑门包括以下几种:
为了实现这个门电路,我们需要创建4个不同的函数,分别代表4种逻辑门。这些函数将计算在输入上的逻辑运算,并返回输出值。
对于输入列表中的每个二进制数,我们需要将其传递给这些函数,然后在输出列表中插入对应的输出值。最后返回输出列表即可。
def AND_gate(inputs):
output = 1
for i in inputs:
if i == 0:
output = 0
break
return output
def OR_gate(inputs):
output = 0
for i in inputs:
if i == 1:
output = 1
break
return output
def XOR_gate(inputs):
ones = inputs.count(1)
if ones % 2 == 0:
return 0
else:
return 1
def NOT_gate(inputs):
if inputs[0] == 0:
return 1
else:
return 0
def Gate_circuit(inputs):
outputs = []
for i in range(len(inputs)):
input_list = inputs[i]
and_output = AND_gate(input_list)
or_output = OR_gate(input_list)
xor_output = XOR_gate(input_list)
not_output = NOT_gate(input_list)
output = [and_output, or_output, xor_output, not_output]
outputs.append(output)
return outputs
inputs = [
[0, 0, 0],
[0, 0, 1],
[0, 1, 0],
[0, 1, 1],
[1, 0, 0],
[1, 0, 1],
[1, 1, 0],
[1, 1, 1]
]
outputs = Gate_circuit(inputs)
print(outputs)
输出结果为:
[
[0, 0, 0, 1],
[0, 1, 1, 1],
[0, 1, 0, 1],
[0, 1, 1, 0],
[0, 1, 1, 1],
[1, 1, 0, 0],
[1, 1, 1, 0],
[1, 1, 0, 0]
]
以上就是这道GATE 2017 MOCK II的第22题的解题思路和代码实现。