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

BCD 編碼與二進制互轉:Linux 核心實現解析

     編輯:關於C語言

什麼是 BCD 碼?

BCD (Binary-Coded Decimal) 以 4 位二進制表示一位十進制數字 (0-9)。常見的 8421 碼中,十進制 17 的 BCD 為 0001 0111 (十六進制 0x17),而其二進制值為 0001 0001 (0x11)。BCD 常用於會計、金融等需精確十進制運算的領域。

核心轉換函數

// BCD → 二進制
unsigned bcd2bin(unsigned char val) {
    return (val & 0x0F) + (val >> 4) * 10;
}

// 二進制 → BCD
unsigned char bin2bcd(unsigned val) {
    return ((val / 10) << 4) + (val % 10);
}

範例驗證

int main(void) {
    unsigned val = 17;
    printf("bin: %u -> 0x%x\n", val, val);           // 17 -> 0x11
    printf("bcd: %u -> 0x%x\n", bin2bcd(val), bin2bcd(val)); // 23 -> 0x17
    return 0;
}

執行結果

輸出:

bin:17--->0x11
bcd:23--->0x17

關鍵差異

表示值二進制 (BIN)BCD 碼
十進制 170x11 (0001 0001)0x17 (0001 0111)

BCD 將每個十進制位獨立編碼,便於十進制顯示與運算,但儲存效率較低(4 位只表示 0-9)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved