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
負數無符號右移