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

C語言位運算技巧:最快判斷奇偶數的方法

     編輯:關於C

位運算核心邏輯

二進位表示中,最低位(LSB)決定奇偶:

  • 奇數:LSB = 1(如 ...001, ...011, ...101)
  • 偶數:LSB = 0(如 ...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;
}

效能對比

擴展應用

  • 快速取模 2 的冪次: n % (1<
  • 判斷 2 的冪次: (n & (n-1)) == 0 && n > 0
  • 交換兩數(無暫存變數): a ^= b; b ^= a; a ^= b;(教學用,實務不推薦)
  • 圖論/狀態壓縮 DP: 位元掩碼表示集合/狀態,&、|、^、~ 對應交集/聯集/差集/補集。

注意事項

  • 負數以補碼儲存,-3 & 1 == 1(奇數),邏輯依然正確。
  • 僅適用整數型別,浮點數需轉換或用 fmod。
  • 可讀性:團隊規範若要求明確語義,可定義巨集 #define IS_ODD(n) ((n)&1)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方法運算指令數(典型)備註
位元 ANDn & 11 (AND + JNZ)最快,無分支預測失誤風險
模運算n % 23-5 (IDIV 或優化後 AND)現代編譯器會優化為 AND,但語義較不明確
位元測試n & 0x1同 n & 1明確顯示位元遮罩