論理ゲートのシミュレータを開発しようとしています。シミュレータは、与えられた回路の真理値表を計算する必要があります。
これが回路例です。a
、b
、c
、は入力であり、d
出力です。e
z
私はプログラミングがかなり新しいです。ゲートをモデリングする方法が見つかりませんでした。アプローチを教えていただけますか?
論理ゲートのシミュレータを開発しようとしています。シミュレータは、与えられた回路の真理値表を計算する必要があります。
これが回路例です。a
、b
、c
、は入力であり、d
出力です。e
z
私はプログラミングがかなり新しいです。ゲートをモデリングする方法が見つかりませんでした。アプローチを教えていただけますか?
入力ごとに、状態(true、false)の真理値表を生成する必要があります。したがって、5つの入力がある場合=合計の組み合わせ= 2^5。
これが必要な言語を指定していません。それで、私はあなたに流動的Java
なアプローチを与えます。
XNOR
、、などのさまざまなゲートに対して定義されたすべての特定の関数がすでにあると仮定します。たとえば、ゲートの関数を次のように持つことができAND
ます。OR
XNOR
boolean XNOR(boolean ip1, boolean ip2)
これで、プロセスは入力のすべての組み合わせ(2 ^ 5)の生成になります。これは単純な順列の問題になります-次のように行うことができます:(値を配列の最後から最初に変更するという考え方です。2つの値しか必要としないため、実装は非常に簡単です)
//inputs - all initialized to FALSE; - ready for 1st case of (2^5)
//Let the inputs a,b,c,d,e correspond to values of this array
boolean inp[]=new boolean[5];
//need a pointer variable for the array
//first pointing to the last-1 element of the array
int main_col=inp.length-2;
//Generate the combinations for input from all FALSE to until you reach all inputs to TRUE values
boolean looptf=true;
while(looptf){
call_Appropriate_gates_from_inputs(inp);
inp[inp.length-1]=!inp[inp.length-1]; //last array element value changed
call_Appropriate_gates_from_inputs(inp);
inp[inp.length-1]=!inp[inp.length-1]; //reset
for(int i=inp.length-2;i>=0;i--){
if (inp[i]){
inp[i]=false;
if (main_col==i){
main_col--;
if (main_col<0){
looptf=false;
break;
}
}
}else{
inp[i]=true;
break;
}
}//for
}//while
これで、メソッドcall_Appropriate_gates_from_inputs(boolean[])
を定義し、ゲートロジックを実行して、結果を取得できます。