操作符系列教材 (四)- Java的位操作符
位操作符在實際工作中用的并不常見,但是同學們總是很喜歡糾結這些位操作。
是以本章節會給出每一個操作符的操作執行個體幫助大家了解其具體含義。
最後說,如果确實感興趣,就看看,個人建議跳過這個章節。 真正工作用到了,再來看。
步驟1:一個整數的二進制表達
步驟2:位或
步驟3:位與
步驟4:異或
步驟5:取非
步驟6:左移 右移
步驟7:練習-快速計算2x16
步驟8:答案-快速計算2x16
步驟9:帶符号右移與無符号右移
步驟10:練習-位操作符
步驟11:答案-位操作符
示例 1 : 一個整數的二進制表達
位操作都是對二進制而言的,但是我們平常使用的都是十進制比如5。
而5的二進制是101。
是以在開始學習之前,需要掌握一個整數的二進制表達是多少。
通過Integer.toBinaryString() 方法,将一個十進制整數轉換為一個二進制字元串

示例 2 : 位或
5的二進制是101
6的二進制是110
是以 5|6 對每一位進行或運算,得到 111->7
示例 3 : 位與
是以 5&6 對每一位進行與運算,得到 100->4
示例 4 : 異或
是以 5^6 對每一位進行異或運算,得到 011->3
一些特别情況:
任何數和自己進行異或 都等于 0
任何數和0 進行異或 都等于自己
示例 5 : 取非
5 的二進制是 00000101
是以取反即為 11111010
這個二進制換算成十進制即為-6
示例 6 : 左移 右移
左移:根據一個整數的二進制表達,将其每一位都向左移動,最右邊一位補0
右移:根據一個整數的二進制表達,将其每一位都向右移動
示例 9 : 帶符号右移與無符号右移
帶符号右移 >>
對于正數, 帶符号右移 >> 會把所有的位右移,并在最前面補0
對于負數, 帶符号右移 >> 會把所有的位右移,并在最前面補1
無符号右移>>>
如果是一個負數,那麼對應的二進制的第一位是1
無符号右移>>>會把第一位的1也向右移動,導緻移動後,第一位變成0
這樣就會使得負數在無符号右移後,得到一個正數
簡單的說:
帶符号右移 >> 移動後正的還是正的,負的還是負的,符号不變
無符号右移>>>移動後,變正的了
更多内容,點選了解: https://how2j.cn/k/operator/operator-bitwise/270.html