德摩根定律

时间:2013-11-18 08:58:25

标签: java boolean-logic demorgans-law

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

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

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

感谢。

6 个答案:

答案 0 :(得分:5)

  

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

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


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

请考虑以下规则:

  1. enter image description here(第二De Morgan's laws

  2. enter image description here

  3. 由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+")");
        }
    }
    

答案 1 :(得分:1)

在java中,整数总是有符号,因此x!= 0与x> 0

相同并不一定正确

答案 2 :(得分:1)

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:我不明白你的意思。你能说明吗?

  

&#34; x!= 0是否简化为x> 0?&#34;

答案 3 :(得分: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

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

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

例如,如果我想要求用户输入一个必须为0,1,2或3的值,我希望在输入值不是的情况下继续while条件(值&gt; = 0和值&lt; = 3)。

这转换为while(!(value&gt; = 0)或!(value&lt; = 3))。

但是!(值&gt; = 0)表示(值&lt; 0),并且!(值&lt; = 3)表示(值> 3),因此while循环被写为而(值) &lt; 0 || value&gt; 3)

希望这有帮助。