2012-10-05

SCIP in C++11 ― 3.3.4節その2


事象駆動シミューレションその2 デジタル回路のシミュレータその2ORゲートと 問題3.29

or-gateのもう一つの実装。
まあそんなに難しくないが、少し遅くなるのね。

----
const List orGateDelay(andGateDelay+inverterDelay*makeLeaf(2));
const List orGate
(const Wire& a1In, const Wire& a2In, const Wire& outputIn)
{
    const auto a1(std::move(a1In));
    const auto a2(std::move(a2In));
    const auto output(std::move(outputIn));

    const auto b(makeWire());
    const auto c(makeWire());
    const auto d(makeWire());
   
    inverter(a1,b);
    inverter(a2,c);
    andGate(b,c,d);
    inverter(d,output);

    return(makeLeaf("OK"));
}

(他は問題3.28と同じなので略)
----
出力
----
Excersize 3.29:
sum 0 New-value = 0
carry 0 New-value = 0
sum 5 New-value = 1
sum 10 New-value = 0
sum 10 New-value = 1
carry 13 New-value = 1
sum 18 New-value = 0

0 件のコメント :

コメントを投稿