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

Java 移位運算符完全指南:<<、>>、>>> 原理與實戰技巧

     編輯:Java 程式設計入門

三大運算符

二進制演示

int n = 10; // 1010
n << 1  → 10100 (20)
n >> 1  → 1010  (10)
n >>> 1 → 1010  (10,正數時與 >> 相同)

// 負數差異
-10 >> 1   → 11111111111111111111111111110101 (-5)
-10 >>> 1  → 01111111111111111111111111110101 (2147483643)

實戰技巧

  • 快速乘除 2 的冪:編譯器自動優化,可讀性優先用 *//
  • 位掩碼提取:(value >> shift) & mask
  • 標誌位操作:flags |= (1 << pos) 設置,flags &= ~(1 << pos) 清除
  • 無符號右移處理負數哈希:hash >>> 16 混合高低位

注意事項

  • 移位位數對 32 (int) 或 64 (long) 取模:n << 33 ≡ n << 1
  • byte/short/char 參與運算自動提升為 int,結果需強轉
  • >>> 無長整型版本,long 同理

面試高頻題

  1. 2 << 3 = ? (16)
  2. -8 >> 2 = ? (-2)
  3. -8 >>> 2 = ? (1073741822)
  4. 如何不使用乘除法實現乘 7?(n << 3) - n
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
運算符名稱規則等價數學運算
<<左移低位補 0,高位丟棄× 2ⁿ (無溢出時)
>>帶符號右移高位補符號位(算術移位)÷ 2ⁿ (向下取整)
>>>無符號右移高位補 0(邏輯移位)無符號數 ÷ 2ⁿ