Java 仅通过=和实现nand=

Java 仅通过=和实现nand=,java,boolean,Java,Boolean,我运行以下代码: public static void main(String[] args) throws Exception { boolean a = false; boolean b = true; xor(a,a); xor(a,b); xor(b,a); xor(b,b); } public static void xor(boolean a , boolean b){

我运行以下代码:

public static void main(String[] args) throws Exception {
        boolean a = false;
        boolean b = true;
        xor(a,a);
        xor(a,b);
        xor(b,a);
        xor(b,b);
    }

    public static void xor(boolean a , boolean b){
        System.out.println(a + "\t" + b + "\t" + (a != b));
    }
得到了这个输出:

false   false   false
false   true    true
true    false   true
true    true    false
更新 如您所知,nand真值表是:

false   false   true
false   true    true
true    false   true
true    true    false

如何仅使用=或!=返回nand没有条件| |和&&?

的运算符基本上是因为
false==false
返回true。 假不等于假,因为假等于假

如果您熟悉二进制操作:它类似于二进制异或操作

1 XOR 0 = 1
1 XOR 1 = 0
0 XOR 1 = 1
0 XOR 0 = 0 << this is false != false

计算a,如果a为真,则b为结果,如果b为假,则结果为真,如果b为真,则结果为假。如果为假,则结果始终为真。

在不使用和的情况下实现nand

尝试:

例如:

public static void nand(boolean a , boolean b){
    System.out.println(a + "\t" + b + "\t" + (a ? !b : true));
}

好吧,这里有一个方法

return String.format("%b%b", a, b).length() != 8; // only "truetrue" has length 8
当然,内部
String.format
会做很多问题中禁止的事情


另一种方法是,如果唯一的条件不是使用其他运算符,则使用
if
而不是conditional:

但是,
NAND
确实有两个独立的输入,您需要以某种方式进行测试和组合:
a
不正确,
b
不正确。由于存在两种情况,无法回避,您只能使用不同的技巧混淆事实,或者以不同的方式使用库函数将其从您自己的代码中推出



第三种方法是,在C中可以这样做:
return(int)a+(int)b!=2;
或其他类似的布尔运算被解释为整数,但Java中不允许将布尔运算转换为整数,因此对于等效代码,您必须使用(例如)
?:
运算符将布尔运算转换为整数。当然,您可以将其包装到一个方法中,这样在java中就可以
返回myBoolToInt(a)+myBoolToInt(b)!=2;,如果只是隐藏操作就可以了,并且您可以使用
+
..

使用此函数,这是nand门的实现

public boolean nand(boolean input1, boolean input2){
    return !(input1 && input2);
}

那么,试着回答这个问题:错误与错误有什么不同?我想不是:)你需要的只是集中注意力!,当然
false!=false
返回
false
因为
false=false
\n我在使用nand、xor时感到困惑。。。!!!我编辑了这个问题!你问了一件事,然后把你的问题完全改成了别的问题。那不太合适。在最坏的情况下,它会使所有答案无效,并导致这些答案的不合理的否决票,很可能还有一些对你的否决票。或者你应该把它们作为单独的问题来问,或者你应该从问你真正想知道的事情开始。这让我想在人们做这种事情时放弃使用堆栈溢出。或者如果你可以使用'not'运算符:(!a | |!b)
return String.format("%b%b", a, b).length() != 8; // only "truetrue" has length 8
if (a == false) return true; // (a==false && b==false) || (a==false && b==true)
if (b == false) return true; // (a==true && b==false)
return false;                // (a==true && b==true)
public boolean nand(boolean input1, boolean input2){
    return !(input1 && input2);
}