1. 程式人生 > 其它 >Java陣列與列表排序總結

Java陣列與列表排序總結

Java運算子大致分為邏輯運算子(&&,||,!)、算數運算子(+, -, *, / ,+=)、位運算子(^,|,&)、其他運算子(三元運算子)

不瞭解二進位制運算的同學可以看我的另一篇有關於進位制運算的 二進位制運算

&(按位與)

位運算子

&按位與的運算規則是將兩邊的數轉換為二進位制位,然後運算最終值,運算規則即(兩個為真才為真)1&1=1 , 1&0=0 , 0&1=0 , 0&0=0

3的二進位制位是0000 0011 , 5的二進位制位是0000 0101 , 那麼就是011 & 101,由按位與運算規則得知,001 & 101等於0000 0001,最終值為1

7的二進位制位是0000 0111,那就是111 & 101等於101,也就是0000 0101,故值為5

&&(邏輯與)

邏輯運算子

&&邏輯與也稱為短路邏輯與,先運算&&左邊的表示式,一旦為假,後續不管多少表示式,均不再計算,一個為真,再計算右邊的表示式,兩個為真才為真。

|(按位或)

位運算子

|按位或和&按位與計算方式都是轉換二進位制再計算,不同的是運算規則(一個為真即為真)1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1

6的二進位制位0000 0110 , 2的二進位制位0000 0010 , 110|010為110,最終值0000 0110,故6|2等於6

||(邏輯或)

邏輯運算子

邏輯或||的運算規則是一個為真即為真,後續不再計算,一個為假再計算右邊的表示式。

^(異或運算子)

位運算子

^異或運算子顧名思義,異就是不同,其運算規則為1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0

5的二進位制位是0000 0101 , 9的二進位制位是0000 1001,也就是0101 ^ 1001,結果為1100 , 00001100的十進位制位是12

<<(左移運算子)

位運算子

5<<2的意思為5的二進位制位往左挪兩位,右邊補0,5的二進位制位是0000 0101 , 就是把有效值101往左挪兩位就是0001 0100 ,正數左邊第一位補0,負數補1,等於乘於2的n次方,十進位制位是20

>>(右移運算子)

位運算子

凡位運算子都是把值先轉換成二進位制再進行後續的處理,5的二進位制位是0000 0101,右移兩位就是把101左移後為0000 0001,正數左邊第一位補0,負數補1,等於除於2的n次方,結果為1

~(取反運算子)

位運算子

取反就是1為0,0為1,5的二進位制位是0000 0101,取反後為1111 1010,值為-6

>>>(無符號右移運算子)

正數無符號右移

無符號右移運算子和右移運算子的主要區別在於負數的計算,因為無符號右移是高位補0,移多少位補多少個0。

15的二進位制位是0000 1111 , 右移2位0000 0011,結果為3

負數無符號右移

-6的二進位制是6的二進位制取反再加1,6的二進位制也就是0000 0000 0000 0000 0000 0000 0000 0110,取反後加1為1111 1111 1111 1111 1111 1111 1111 1010,右移三位0001 1111 1111 1111 1111 1111 1111 1111