首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 位運算完全指南:移位、邏輯運算、優先級、實戰技巧與十六進制表示法

     編輯:Java 綜合教學

Java 位運算完全指南

一、二進制補碼表示

  • 最高位為符號位:0 正數、1 負數
  • 負數補碼 = 絕對值按位取反 + 1
  • 例:-5 → 00000101 → 11111010 + 1 = 11111011

二、位運算符分類與規則

運算符名稱規則範例 (5=0101, 3=0011)
<<左移低位補 0,高位捨棄5 << 2 = 20 (10100)
>>算術右移高位補符號位5 >> 2 = 1; -5 >> 2 = -2
>>>邏輯右移高位補 0(無符號)-5 >>> 2 = 1073741822
&按位與同為 1 結果 15 & 3 = 1 (0001)
|按位或任一為 1 結果 15 | 3 = 7 (0111)
^按位異或相異為 1,相同為 05 ^ 3 = 6 (0110)
~按位非逐位取反~5 = -6

三、移位運算細節

  • int/long:右側保留 5/6 位(模 32/64)
  • byte/short/char:自動提升為 int 再移位
  • 左移 1 位 ≈ ×2,右移 1 位 ≈ ÷2(效率高於乘除)

四、運算符優先級(高→低)

~  >  << >> >>>  >  &  >  ^  >  |

五、異或 (^) 實戰技巧

  1. 翻轉指定位:x ^ mask(mask 對應位為 1)
  2. 無臨時變數交換:
    a = a ^ b; b = a ^ b; a = a ^ b;
  3. 自檢屬性:a ^ a = 0,a ^ 0 = a

六、與、或 實戰技巧

  • & 屏蔽/取位:x & 0xFF 取低 8 位
  • | 置位:x | 0x01 將第 0 位設為 1

七、非十進制字面值表示法

進制前綴範例說明
八進制00144 (=100)數字 0-7
十六進制0x / 0X0xFF (=255)數字 0-9, A-F (不分大小寫)
二進制0b (JDK 7+)0b1010 (=10)僅 0/1

注意:八/十六進制字面值視為無符號正數,-0xFF 是一元負號運算,非字面值一部分。

八、完整程式碼驗證

public class BitwiseDemo {
    public static void main(String[] args) {
        System.out.println(5 << 2);   // 20
        System.out.println(5 >> 2);   // 1
        System.out.println(-5 >> 2);  // -2
        System.out.println(-5 >>> 2); // 1073741822
        System.out.println(5 & 3);    // 1
        System.out.println(5 | 3);    // 7
        System.out.println(5 ^ 3);    // 6
        System.out.println(~5);       // -6

        // 判斷長整數第 4 位 (從 0 開始)
        long a = 123; // 1111011
        int bit = (int)((a >> 4) & 1); // 1
        System.out.println("第 4 位: " + bit);
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved