對任意整數 a, b,恒有:
max(a,b) = (a + b + |a - b|) / 2
原理:a + b + |a-b| 等於兩倍的較大值。
代碼:
int a = -10, b = -100;
int c = (a + b + abs(a - b)) / 2; // c = -10
利用符號位判斷 a - b 的正負:
int diff = a - b;
int sign = (unsigned)diff >> (sizeof(int)*8 - 1); // 0: a>=b, 1: a
int max = a - sign * diff; // 或用數組索引
完整示例:
int a = 10, b = 100;
int diff = a - b;
int idx = (unsigned)diff >> 31; // 32位系統
int arr[2] = {a, b};
cout << arr[idx] << endl; // 輸出 100
unsigned 右移保證邏輯移位(高位補 0)。diff >> 31 提取符號位:非負得 0,負得 1(補碼表示)。long long 或無符號類型。std::max 通常已生成無分支指令(CMOV),手寫技巧多用於教學或極端優化。