Java 位運算子 深入理解

2021-08-20 11:31:59 字數 1706 閱讀 5158

&:

作用是對運算子兩側以二進位制表達的操作符按位分別進行'與'運算。而這一運算是以數中同樣的位(bit)為單位的。

操作的規則是:僅當兩個運算元都為1時。輸出結果才為1。否則為0

,示比例如以下:

12 的二進位制為 0000 1100.

5  的二進位制為 0000 0101.

則 12 & 5 的二進位制為 0000 0100,則完整的表示式為 12 & 5 = 4;

|:

作用是對運算子兩側以二進位制表達的操作符按位分別進行'或'運算。而這一運算是以數中同樣的位(bit)為單位的。

操作的規則是:僅當兩個運算元都為0時,輸出的結果才為0。否則為1

,示比例如以下:

12 的二進位制為 0000 1100.

5   的二進位制為 0000 0101.

則 12 | 5 的二進位制為 0000 1101。則完整的表示式為 12|5 = 13;

^

作用是對運算子兩側以二進位制表達的運算元按位分別進行'異或'運算,而這一運算是以數中同樣的位(bit)為單位的。

異或運算操作的規則是:僅當兩個運算元不同一時候。對應的輸出結果才為1,否則為0

,示比例如以下:

12 的二進位制為 0000 1100.

5   的二進位制為 0000 0101.

則 12^5 的二進位制為 0000 1001。則完整的表示式為 12^5 = 9;

~

'取反'運算子~的作用是將各位數字取反:全部的0置為1

,1置為0

,示比例如以下:

(1)12 的二進位制為 0000 1100.

先取反:1111 0011.

遵循正整數「減一」得補碼 :1111 0010.

隨後,在補碼的基礎上取反 得到 : 1000 0000 0000 0000 0000 0000 0000 1101

則完整的表示式為~12 = -13

(2)-10 的二進位制為 0000 1010.

先取反: 1111 0101.

遵循負整數「加一」得補碼:1111 0110.

隨後,在補碼的基礎上取反 得到 :0000 0000 0000 0000 0000 0000 0000 1001

<<

左移就是把乙個數的全部位數都向左移動若干位

,示比例如以下:

12 的二進位制為 0000 1100

則 12 << 1 的二進位制為 0001 1000, 則完整的表示式為 12 << 1 = 24;

>>

右移就是把乙個數的全部位數都向右移動若干位

,示比例如以下:

12 的二進位制為 0000 1100.

則 12 >> 1 的二進位制為 0000 0110。 則完整的表示式為 12 >> 1 =6;

深入理解按位異或運算子

小步不停注 文章 參與運算的兩個值,如果兩個相應bit位相同,則結果為0,否則為1。即 0 0 0,1 0 1,0 1 1,1 1 0 例如 10100001 00010001 10110000 按位異或的3個特點 1 0 0 0,0 1 1 0異或任何數 任何數 2 1 0 1,1 1 0 1異或...

深入理解按位異或運算子

參與運算的兩個值,如果兩個相應bit位相同,則結果為0,否則為1。即 0 0 0,1 0 1,0 1 1,1 1 0 按位異或的3個特點 1 0 0 0,0 1 1 0異或任何數 任何數 2 1 0 1,1 1 0 1異或任何數 任何數取反 3 任何數異或自己 把自己置0 按位異或的幾個常見用途 1...

深入理解按位異或運算子

參與運算的兩個值,如果兩個相應bit位相同,則結果為0,否則為1。即 0 0 0,1 0 1,0 1 1,1 1 0 例如 10100001 00010001 10110000 按位異或的3個特點 1 0 0 0,0 1 1 0異或任何數 任何數 2 1 0 1,1 1 0 1異或任何數 任何數取反...