真相 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
我有一个作业的问题。问题基本上如下: 有 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