真相 Table - 援助

Truth Table - Assistance

我有一个作业的问题。问题基本上如下: 有 2 个整数变量,比如 A 和 B。这两个整数都包含数据。 使用真值 table,如果有的话,以下 IF 语句测试等效于:

if (!(A == 60 && B == 40))   

 -   if (A != 60 || B != 40)
 -  if (A == 60 && (!(B == 40)))

请问我该如何解决这个问题。任何建议将不胜感激。我认为我必须创建一个包含三列的 table - 一列称为 A,另一列称为 B,第三列称为 RESULT(是或否)。

声明:if (!(A == 60 && B == 40)) - 我不确定如何阅读 if (! 部分。换句话说,A == 60 && B == 40 部分基本上告诉我 A 必须等于 60,同时 B 必须等于 40。接下来我很困惑。任何help/advise请将不胜感激。

谢谢 克里斯

这确实与 Java 本身无关。是的,写真tables就可以解决。 ! 表示 逻辑否定 或者您甚至可以将其视为 相反 .就个人而言,我发现建立一个特定真理的所有部分很有帮助 table。

   a    |   b    |    !b     |       a & b       |      a & !b        |      !(a & b)
 ----------------------------------------------------------------------------------------
 A = 60 | B = 40 | !(B = 40) | (A = 60 & B = 40) | A = 60 & !(B = 40) | !(A = 60 & B = 40)
   T    |   T    |     F     |         T         |        F           |          F
   T    |   F    |     T     |         F         |        T           |          T
   F    |   T    |     F     |         F         |        F           |          T
   F    |   F    |     T     |         F         |        F           |          T

您应该注意您的特定示例受 De Morgan's Laws.

之一的约束

P is A = 60  
Q is B = 40  
¬ is !  
∧ is &&   
∨ is ||   

所以...

!(A && B)真的和!A || !B

一样

真相 table 告诉您解决该问题所需的其余知识。

我希望我创建的这段代码能帮助您了解,这是一个使用二进制(0 和 1)而不是布尔值(真、假)显示真相的简单代码Table

/**
 * Truth table for the logical operators. Using
 * zeros and ones.
 * 
 * @ Samuel Mayol
 */

public class LogicalOpTable {
    public static void main(String[] args) {

        boolean p, q; 
        byte p1, q1, pAndQ, pOrQ, pXORq, notP, pq;

        System.out.println("Using 0s and 1s for the Truth Table:");
        System.out.println("P\tQ\tAND\tOR\tXOR\tNOT"); // using tabs \t

        pq =1;

        switch (pq) { // without break it will execute the whole swich case statements
            case 1 : 
                p = true; q = true;
                p1=(byte) (p?1:0); // The ? : operator in Java
                q1=(byte) (q?1:0); // Short form for Java If statement
                pAndQ=(byte) ((p&q)?1:0); 
                pOrQ=(byte) ((p|q)?1:0);
                pXORq=(byte) ((p^q)?1:0);
                notP= (byte) ((!p)?1:0);

                System.out.print(p1 + "\t" + q1 + "\t");
                System.out.print(pAndQ + "\t" + pOrQ + "\t");
                System.out.println(pXORq + "\t" + notP);
            case 2: 
                p = true; q = false;
                p1=(byte) (p?1:0); // The ? : operator in Java
                q1=(byte) (q?1:0); // Short form for Java If statement
                pAndQ=(byte) ((p&q)?1:0); 
                pOrQ=(byte) ((p|q)?1:0);
                pXORq=(byte) ((p^q)?1:0);
                notP= (byte) ((!p)?1:0);

                System.out.print(p1 + "\t" + q1 + "\t");
                System.out.print(pAndQ + "\t" + pOrQ + "\t");
                System.out.println(pXORq + "\t" + notP);
            case 3: 
                p = false; q = true;
                p1=(byte) (p?1:0); // The ? : operator in Java
                q1=(byte) (q?1:0); // Short form for Java If statement
                pAndQ=(byte) ((p&q)?1:0); 
                pOrQ=(byte) ((p|q)?1:0);
                pXORq=(byte) ((p^q)?1:0);
                notP= (byte) ((!p)?1:0);

                System.out.print(p1 + "\t" + q1 + "\t");
                System.out.print(pAndQ + "\t" + pOrQ + "\t");
                System.out.println(pXORq + "\t" + notP);
            case 4: 
                p = false; q = false;
                p1=(byte) (p?1:0); // The ? : operator in Java
                q1=(byte) (q?1:0); // Short form for Java If statement
                pAndQ=(byte) ((p&q)?1:0); 
                pOrQ=(byte) ((p|q)?1:0);
                pXORq=(byte) ((p^q)?1:0);
                notP= (byte) ((!p)?1:0);

                System.out.print(p1 + "\t" + q1 + "\t");
                System.out.print(pAndQ + "\t" + pOrQ + "\t");
                System.out.println(pXORq + "\t" + notP);
        }
    }
}

运行这段代码后的结果是:

Using 0s and 1s for the Truth Table:
P   Q   AND OR  XOR NOT
1   1   1   1   0   0
1   0   0   1   1   0
0   1   0   1   1   1
0   0   0   0   0   1