外觀相似但語意截然不同的三個符號:> (大於)、>> (算術右移)、>>>> (邏輯右移)。
boolean。Comparable 的物件。int a = 5, b = 3;
boolean result = a > b; // true
int x = 15; // 0000 1111
int r1 = x >> 2; // 0000 0011 = 3 (15 / 4 = 3)
int y = -15; // 1111 0001 (補碼)
int r2 = y >> 2; // 1111 1100 = -4 (保持負號)
int x = 15; // 0000 1111
int r1 = x >>> 2; // 0000 0011 = 3 (正數同 >>)
int y = -15; // 1111 0001
int r2 = y >>> 2; // 0011 1100 = 1073741820 (變巨大正數)
public class ShiftDemo {
public static void main(String[] args) {
System.out.println("1. > 比較: 5 > 3 = " + (5 > 3));
System.out.println("\n2. >> 算術右移:");
System.out.println("15 >> 2 = " + (15 >> 2)); // 3
System.out.println("-15 >> 2 = " + (-15 >> 2)); // -4
System.out.println("\n3. >>> 邏輯右移:");
System.out.println("15 >>> 2 = " + (15 >>> 2)); // 3
System.out.println("-15 >>> 2 = " + (-15 >>> 2)); // 1073741820
// 位運算實用技巧
System.out.println("\n4. 實用技巧:");
System.out.println("快速除以 2^n: 100 >> 3 = " + (100 >> 3)); // 12
System.out.println("判斷奇偶: (n & 1) == 1 -> " + ((7 & 1) == 1)); // true
System.out.println("清除最低位 1: n & (n-1) -> " + (12 & 11)); // 8 (1100 & 1011)
}
}
| 運算符 | 名稱 | 範例 | 結果 |
|---|---|---|---|
~ | 按位取反 (NOT) | ~5 | -6 |
& | 按位與 (AND) | 5 & 3 | 1 |
| | 按位或 (OR) | 5 | 3 | 7 |
^ | 按位異或 (XOR) | 5 ^ 3 | 6 |
<< | 左移 | 3 << 2 | 12 |
>>= | 邏輯右移賦值 | x >>>= 2 | x = x >>> 2 |