二進位表示中,最低位(LSB)決定奇偶:
...001, ...011, ...101)...000, ...010, ...110)n & 1 直接提取最低位:結果為 1 表奇數,0 表偶數。無除法/模運算開銷,單指令完成。
#include <stdio.h>
int main() {
int n;
while (1) {
printf("請輸入整數: ");
if (scanf("%d", &n) != 1) break;
if (n & 1)
printf("%d 是奇數\n", n);
else
printf("%d 是偶數\n", n);
}
return 0;
}
| 方法 | 運算 | 指令數(典型) | 備註 |
|---|---|---|---|
| 位元 AND | n & 1 | 1 (AND + JNZ) | 最快,無分支預測失誤風險 |
| 模運算 | n % 2 | 3-5 (IDIV 或優化後 AND) | 現代編譯器會優化為 AND,但語義較不明確 |
| 位元測試 | n & 0x1 | 同 n & 1 | 明確顯示位元遮罩 |