| 符號 | 名稱 | 規則 | 典型用途 |
|---|---|---|---|
| & | 按位與 | 同為1得1 | 掩碼清零、保留特定位 |
| | | 按位或 | 有一個1得1 | 置位、合併標志位 |
| ^ | 按位異或 | 不同得1 | 翻轉位、簡易加密、交換變量 |
| ~ | 取反 | 0↔1 | 生成掩碼、位取反 |
| << | 左移 | 高位丟棄,低位補0 | 快速乘 2ⁿ、組合高低位 |
| >> | 右移 | 低位丟棄,符號位擴展 | 快速除 2ⁿ、提取高位 |
a & 0xFF // 保留低8位,高位清零 a | 0xF0 // 設置高4位為1 a ^ 0xFF // 翻轉低8位 ~a // 全位取反
// 將兩個 char 合併為 int (小端序) char a='a', b='b'; int p = (a << 8) | b; // p = 0x6261 // 提取 char low = p & 0xFF; // 'a' char high = (p >> 8) & 0xFF; // 'b'
x << 3 // x * 8 x >> 2 // x / 4 (有符號算術右移保持符號)
負數右移時符號位擴展:Turbo C 等多數編譯器採用算術右移(補 1),但 C 標準規定為實現定義行為。跨平台代碼應顯式轉為 unsigned 再右移,或使用除法。