首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAVA中的Gate NAND

JAVA中的Gate NAND
EN

Stack Overflow用户
提问于 2015-04-11 08:55:05
回答 1查看 2.3K关注 0票数 0

这一次,我有NAND GateNOR Gate,在这两个测试中,我只有一个测试失败。在NAND中,假设输入信号是0X(LOW and UNKNOWN SIGNAL),输出应该是1,但我得到的是X。在NOR中,当我有1 (HI信号)和X (未知信号)的混合时,答案应该是0,但我得到的X Im只有一个涉及0X的测试用例失败,并且它们通过NAN的输出应该是1。在这个方法中,当我检查Signal.X时,boolean变成了true,但是它会从循环中中断吗?

代码语言:javascript
复制
  Table NAND for reference.(NOTE:table does not contain X)

         Input A    Input B     Output Q
              0       0           1
              0       1           1
              1       0           1
              1       1           0

    Table NOR for reference.(NOTE:table does not contain X)

Input A     Input B     Output Q
    0          0           1
    0          1           0
    1          0           0
    1          1           0




//in NAND propagate when the inputs are 0X or 000X0X the output should be 1, Im //getting X
 public boolean propagate() //NAND method
        {
            Signal inputSignal;
            Signal temp = getOutput().getSignal();
            List<Wire> inputs = getInputs();
            boolean hasX = false;
            int countLO = 0;
            int countHI = 0;

            for(Wire wire: inputs)
            {
                inputSignal = wire.getSignal();

                if(inputSignal == Signal.X)
                    hasX = true;

                else if(inputSignal == Signal.LO)
                    countLO++;

                else if(inputSignal == Signal.HI)
                    countHI++;
            }

            if(hasX)
                getOutput().setSignal(Signal.X);

            else if(countLO == inputs.size())
                getOutput().setSignal(Signal.HI);

            else if(countHI == inputs.size())
                getOutput().setSignal(Signal.LO);

            else
                getOutput().setSignal(Signal.HI);

.................................


//in NOR propagate when the inputs are 1X1X or 1X the output should be X, Im //getting X

public boolean propagate() //NOR method
    {
        Signal inputSignal;
        int countLO = 0;
        boolean hasX = false;
        List<Wire> inputs = getInputs();
        Signal temp = getOutput().getSignal();

        for(Wire wire: inputs)
        {
            inputSignal = wire.getSignal();

            if(inputSignal == Signal.X)
            {
                hasX = true;
                break;
            }

            else if(inputSignal == Signal.LO)
                countLO++;
        }

        if(hasX)
            getOutput().setSignal(Signal.X);

        else if(countLO != inputs.size())
            getOutput().setSignal(Signal.LO);

        else getOutput().setSignal(Signal.HI);
EN

回答 1

Stack Overflow用户

发布于 2015-04-11 09:13:47

您的表应该包括X,这样我们就可以看到程序应该做什么。不管怎么说,问题似乎出在if(hasX) getOutput().setSignal(Signal.X);这一行。因为这是嵌套的if语句中的第一行,所以它的优先级高于其他任何语句。因此,如果输入中有任何X,就会调用getOutput().setSignal(Signal.X)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29572802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档