1. 程式人生 > 其它 >14 邏輯運算子 位運算子

14 邏輯運算子 位運算子

邏輯運算子 位運算子

邏輯運算子

package base;

//邏輯運算子
public class demo05 {
public static void main(String[] args) {
//與(and) 或(or) 非(取反)
boolean a=true;
boolean b=false;

System.out.println("a && b:"+(a && b));//邏輯與運算,兩個變數都為真,結果才為真
System.out.println("a || b:"+(a || b));//邏輯或運算,兩個變數有一個為真,結果為真
System.out.println("!(a && b):"+!(a && b));//如果是真則變為假,如果是假則變為真

//短路運算
//邏輯與運算時,需要兩個都為真時才為真,如果第一個就為假,後面的就不會進行運算,直接為假
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5 本來應該輸出6 因為短路,所以沒有運算

}
}

位運算子

package base;

public class demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
-----------------------
(A與B)A&B = 0000 1100 上下都為1才是1,否則為0
(A或B)A|B = 0011 1101 上下都是0結果為0,否則為1
(亦或運算)A^B = 0011 0001 上下相同則為0,否則為1
(非A即B)~B = 1111 0010 跟對應值反著來,1為0,0為1

2*8 = 16 2*2*2*2
效率極高! 二進位制
左移<< *2
右移>> /2

0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16

*/
System.out.println(2<<3);//16 2*2*2*2
System.out.println(32>>2);//8 32/2/2
}
}