德摩根定律

我试图使用DeMorgan定律简化以下内容: (x!= 0 || y!= 0)

x!= 0是否简化为x> 0? 或者我错了以下内容:

!(x>0 || y>0) !(x>0) && !(y>0) ((x<=0) && (y<=0)) 

谢谢。

x!= 0是否简化为x> 0?

不,那不是真的。 因为整数是签名的。


如何简化: !(x!=0 || y !=0)

考虑这个规则:

  1. 在此处输入图像描述 (第二德摩根定律 )

  2. 在此处输入图像描述

它意味着1.

!(x!=0 || y !=0) <=> (!(x!=0)) && (!(y != 0))

它意味着2.

(!(x!=0)) && (!(y != 0)) <=> (x == 0) && (y == 0)


要测试,您可以编写以下循环:

 for(int x = -5; x < 5; x++){ for(int y = -5; y < 5; y++){ if(!(x!=0 || y !=0)) System.out.println("True : ("+x+","+y+")"); } } 

在java中,整数总是有符号的,因此x!= 0与x> 0相同并不一定正确

DeMorgans Law声明如下:

 !(A & B) = !A | !B (I) !(A | B) = !A & !B (II) 

在你的情况下(II)适用: !(x>0 || y>0) = !(x>0) && !(y>0) = (x<=0) && (y<=0)

PS:我不明白你的意思如下。 你能说明吗?

“x!= 0是否简化为x> 0?”

x!= 0是否简化为x> 0? 或者我错了以下内容:

 x != 0 // reads x does not equal 0; any number BUT 0 x > 0 // reads x is greater than 0; only numbers greater than 0 

当你这样写出来时,这两个看起来是一样的吗?

综合

 (x != 0 && x > 0) // any number above 0 (x != 0 || x > 0) // any number BUT 0 

根据德摩根定律,前两个比较的转换如下。

  !(x>0 || y>0) ---> x <= 0 && y <= 0 

  !(x>0) && !(y>0) ---> !(x <=0 || y <=0) 

当我教如何编写Java do-while循环时,我将解释如何编写终止循环的条件。

例如,如果我想要求用户输入一个必须为0,1,2或3的值,如果输入值不是(值> = 0且值<= 3),我希望while条件继续。

这转换为while(!(value> = 0)或!(value <= 3))。

但是!(value> = 0)表示(值<0),而!(value <= 3)表示(值> 3),因此while循环写为while(值<0 || value> 3)

希望这可以帮助。