網頁

2013年9月9日 星期一

Ch1_14 邏輯運算子(&、|、!、、&&、||)

邏輯運算符號的運算結果為boolean型態,也就是只有2個結果,true或false。

位元運算子
在這Java裡提供&、 | 、! 、~ 四個位元運算子,這些運算子又稱邏輯運算子,因為他們分別提供數位邏輯處理中的And,Or,Xor 與補數運算。
還有1種是這種寫法:

         運算子             
操 作 說 明
&
op1 & op2 將op1與op2的數值逐位元進行And運算
     |    
op1 | op2 將op1與op2的數值逐位元進行OR運算
^ op1 ^ op2 將op1與op2的數值逐位元進行Xor運算NOT
~ ~op1 將op1的數值取其補數

會像這樣:


其它也會像這樣進行逐位元運算。

邏輯運算子

         邏輯運算符號                 說 明
& AND
     |     OR
!NOT
&&AND
||OR

  • 宣告變數
int a=1;
int b=2;

  • AND(&)運算範例
(a<b)&(a<0)
在AND運算時,會先運算(a<b)。
在AND運算子中,不論傳回值是true或false的時候,皆會執行下一組運算(a<0)。

&的真值表同&&的真值表(在2種狀況同時成立才會是true)
  • AND(&&)運算範例
(a<b)&&(a<0)
在AND運算時,會先運算(a<b)。
在AND運算子中,只有當第1組運算結果傳回值為true,才會執行下一組運算。

  • OR(|)運算範例
(b>a)|(a<0)
在OR運算時,會先運算(b>a)。
在OR運算子中,不論傳回值是true或false的時候,皆會執行下一組運算(a<0)。

|的真值表同|的真值表(在有1種狀況是true,就會成立)

  • OR(||)運算範例
(b>a)||(a<0)
在OR運算時,會先運算(b>a)。
在OR運算子中,只有當第1組運算結果傳回值為false,才會執行下一組運算。


  • NOR(!)運算範例
!(a<b)
在NOR運算時,會先運算(a<b)。
在NOR運算子中,運算結果為false,但是會反相為true,反之運算結果為true,則會反相為false。

  • XOR(^)運算範例
(b>a)^(a<0)
在XOR運算時,會先運算(b<a)。
在XOR運算子中,不論傳回值是true或false的時候,皆會執行下一組運算(a<0)。
在XOR運算子中,當所有條件式都是true,結果反而得到false,是XOR運算的特色。

^的真值表


範例程式
    • Ch1_14 .java

    package chapter;

    public class Ch1_14 {
        public static void main(String[] args) {
            System.out.println("13 & 12 ="+(13 & 12));
        }
    }
    • Ch1_15 .java
    package chape;
    public class Ch1_15 {
        public static void main(String[] args) {
            System.out.println("true  & true\t=" + (true & true));
            System.out.println("true  & false\t=" + (true & false));
            System.out.println("false & true\t=" + (false & true));
            System.out.println("false & false\t=" + (false & false));
        }
    }
    
    
    • Ch1_16 .java
    package chape;
    public class Ch1_16 {
        public static void main(String[] args) {
            System.out.println("true  | true\t=" + (true | true));
            System.out.println("true  | false\t=" + (true | false));
            System.out.println("false | true\t=" + (false | true));
            System.out.println("false | false\t=" + (false | false));
        }
    }
    
    
    • Ch1_17 .java

    
    
    package chape;

    public class Ch1_17 {
        public static void main(String[] args) {
            System.out.println("true  ^ true\t=" + (true ^ true));
            System.out.println("true  ^ false\t=" + (true ^ false));
            System.out.println("false ^ true\t=" + (false ^ true));
            System.out.println("false ^ false\t=" + (false ^ false));
        }
    }

    沒有留言:

    張貼留言