gpt4 book ai didi

C#动态逻辑门

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:07 30 4
gpt4 key购买 nike

我正在开发一个程序,允许用户从虚拟逻辑门构建数字电路。每个门都是代表特定门类型的类的实例,例如,AND 类的外观如下:

public class andgate
{
public andgate()
{
inputs = new bool[7];
for (int i = 0; i < 7; i++) inputs[i] = true;
output = (inputs[0] && inputs[1] && inputs[2] && inputs[3] && inputs[4] && inputs[5] && inputs[6]);
}
public bool[] inputs;
public bool output;
}

每个门都有七个输入,但并非所有输入都必须使用(即,对于具有三个输入的门,其余四个将只是“1”,无论如何这是 AND 的中性元素)。每个输入都是对另一个门的输出或 bool 数组(存储输入向量)的元素的引用,因此一个门生成的信号会自动发送到下一个门。问题是我还需要在门内动态传输信号,即如果与门中的输入信号之一设置为 0,则输出自动具有 0 值。因此,当您将二进制向量提供给电路的输入时,它会改变电路输出的值。或者也许有比从单个门构建电路更简单的方法来模拟电路?我需要它来生成测试模式。

最佳答案

output 属性设为只读:

public bool output
{
get
{
return inputs.All(i => i);
}
}

不是对所有输入进行 AND 运算,而是检查是否有任何输入是错误的。

当然,您必须在构造函数中删除对output 的赋值。这应该使您的 output 属性“动态”。

您可能还想将输入更改为 bool?[],以便 null 值表示没有信号。然后,您必须将输入数组的初始化全部移除为真,并将输出返回更改为:

return inputs.All(i => i.GetValueOrDefault(true));

根据 Tim S 在评论中的建议进行编辑

关于C#动态逻辑门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13521837/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com