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

Java 位元運算子詳解:&、|、^ 運算邏輯與優先級

     編輯:Java 綜合教學

Java 位元運算子核心概念

在 Java 程式設計中,位元運算子直接操作整數的二進位表示,是底層運算與效能優化的關鍵工具。本文系統整理 &(位元 AND)、|(位元 OR)、^(位元 XOR)三大核心運算子的運算規則、優先級階層與實戰應用場景。

1. 位元 AND 運算子(&)

運算規則:將兩個操作數轉為二進位,逐位比較。只有雙方皆為 1 時,結果才為 1;否則為 0。

範例:12 & 10
12 = 1100 (二進位)
10 = 1010 (二進位)
----------------
結果 = 1000 (二進位) = 8 (十進位)

典型用途:

  • 判斷奇偶數:(n & 1) == 0 為偶數
  • 清零特定位:x & ~mask
  • 取模運算優化(2 的冪次):n & (2^k - 1) 等價於 n % 2^k

2. 位元 OR 運算子(|)

運算規則:逐位比較,雙方只要有一個為 1,結果即為 1;雙方皆為 0 才為 0。

範例:12 | 10
12 = 1100
10 = 1010
----------------
結果 = 1110 (二進位) = 14 (十進位)

典型用途:

  • 設定特定位為 1:x | mask
  • 合併權限標誌(如 READ | WRITE | EXECUTE)
  • 快速將數值轉為正數:(n | 0) 強制轉 int

3. 位元 XOR 運算子(^)

運算規則:逐位比較,相同為 0,不同為 1。具有「可逆性」與「自反性」。

範例:12 ^ 10
12 = 1100
10 = 1010
----------------
結果 = 0110 (二進位) = 6 (十進位)

經典應用:

  • 不使用暫存變數交換兩數:a ^= b; b ^= a; a ^= b;
  • 簡易加密/校驗(如奇偶校驗位)
  • 尋找陣列中唯一出現一次的數字(其餘皆出現兩次)

運算子優先級與結合性

Java 位元運算子優先級由高到低:

  1. ~(位元 NOT,單目)
  2. &(位元 AND)
  3. ^(位元 XOR)
  4. |(位元 OR)

注意:位元運算子優先級 低於 關係運算子(==, < 等)與算術運算子,但 高於 邏輯運算子(&&, ||)。建議複雜表達式加括號明確語序。

補充:位元位移運算子

  • << 左移:低位補 0,相當於乘以 2n
  • >> 有號右移:保留符號位,相當於除以 2n(向下取整)
  • >>> 無號右移:高位補 0,無符號整數除法

實戰建議

  1. 處理大量標誌位時,優先使用 int 或 long 位元欄位,配合 &/|/^ 操作,效能遠優於 boolean[] 或 Set。
  2. 涉及負數位移時,務必區分 >> 與 >>> 的語義差異。
  3. 程式碼可讀性優先:複雜位元運算建議封裝為語義化方法(如 isFlagSet(flags, READ))。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved