學習筆記(2) 邏輯運算子和位運算子

2021-10-04 02:36:30 字數 2435 閱讀 7512

public class demo1

}

結果如下:

a && b = false

a || b = true

!a = false

短路運算

&&和||的短路運算,是指如果前面的判斷條件已經明確結果則不執行後面的判斷

例如:

public class demo1

}

結果如下:

b = false

a = 10

c = true

a = 9

當判斷到(a<9)為假時,將不再執行後面的運算判斷,即(a++<9)沒有被執行

&、&&的區別

&&執行短路運算,效率比&高,只要&&左邊存在false,右邊不執行;

&物理左邊是false還是true,右邊都執行。

注:同理可得|和||的區別

注:以下資料型別預設為byte-8位

&:與運算,即如果對應位都是1得1,否則為0

例如:0010 1101

& 0110 0111 

0010 0101

| :或運算,即如果對應位都是0為0,否則為1

例如:0010 1101

|  0110 0111 

0110 1111

^:異或運算,即對應位相同則為0,不相同則為1

例如:0010 1101

^  0110 0111 

0100 1010

~:取反運算,即原位為1,取反後為0,反之亦然

a  =0011 1010

~a=1100 0101

<<:表示將運算元左移一位,不分正負數,並在低位補0

byte a = 8;

system.out.println(a<<2);

正數a=8

8的二進位制補碼:0000 1000

a<<2,即為8的二進位制補碼左移兩位後得到:0010 0000

0010 0000轉換為十進位制:a<<2 = 32

左移運算子《可看作是運算元乘以n2

如上a<<2可以看作為a*2*2,但是使用左移運算子是比直接用*運算子要快的,因為這樣是直接對底層二進位制數進行運算,效率更高

!!注意二進位制數範圍(byte為-128——127)

>>:表示將運算元右移一位,如果運算元為正數,高位補0;負數則高位補1

——————————————————————右移運算子》可看作是運算元除以n次2

正數a=8

8的二進位制補碼:0000 1000

a>>2,即為8的二進位制補碼左移兩位後得到:0000 0010

0010 0000轉換為十進位制:a>>2 = 2

負數a=-20

-20的二進位制原碼為:1001 0100

反碼為:1110 1011(除最高位符號位,其餘位取反)

補碼為:1110 1100(反碼+1)

右移兩位後的補碼為:1111 1011

反碼為:1111 1010

原碼為:1000 0101

a>>2結果為:-5

>>>:表示無符號右移,也稱為「邏輯右移」,即若運算元為正,則高位補0;若運算元為負,則右移後高位同樣補0

正數a>>>2的結果與a>>2的結果是一樣的

負數a=-24

注:以下資料型別預設為int 32位

-24原碼:10000000 00000000 00000000 00011000

反碼:11111111 11111111 11111111 11100111

補碼:11111111 11111111 11111111 11101000

右移2位:0011111111 11111111 11111111 111010

a>>>2=1073741818

邏輯運算子和位運算子

邏輯與 當且僅當左右兩個關係表示式均為true時返回true,否則返回false。邏輯或 當且僅當左右兩個關係表示式均為false時返回true,否則返回true。邏輯非!單目運算子,對關係表示式取反。與 兩個運算元二進位制形式的對應位中均為1時,相應的位返回1,否則返回0.例如128 129,返回...

基本運算子 邏輯運算子 位運算子等 學習筆記

冪運算 2 3 double pow math.pow 2,3 冪運算 boolean a true boolean b false system.out.println a b a b 邏輯與運算 兩個變數都為真,結果才為true system.out.println a b a b 邏輯或運算 ...

邏輯運算子與位運算子

1.運算子 用於對邏輯值的取反運算。當邏輯值為true時,經過取反變為false 當邏輯值為false時取反成true。2.運算子 運算子 用於對邏輯值進行異或運算。當運算兩側同時為true或false時,運算結果為false,否則為true。3.運算子 和 運算子 和 均用於邏輯與運算。當兩側同時...