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

C語言進制轉換完全指南:十進制轉二進制/八進制/十六進制實現

     編輯:關於C

進制轉換是計算機基礎核心知識,C 語言通過格式化輸出與位運算提供多種實現路徑。本文系統講解標準庫函數與手動算法兩種方案,附帶完整可運行代碼。

標準庫格式化輸出法

利用 printf 格式控制符直接輸出不同進制:

void decimalismToOther() {
    int num = 0;
    printf("please input a decimalism number: ");
    scanf("%d", &num);           // 十進制輸入
    
    printf("the hex number is: %x \n", num);      // 十六進制
    printf("the octal number is: %o \n", num);    // 八進制
    printf("the nosigned number is: %u \n", num); // 無符號整數
    
    // 科學計數法與格式化輸出
    printf("the exponent number is: %e \n", 1000.0);
    printf("the float number is: %-10.1f\n", 100.0f); // 左對齊
}

手動實現十進制轉二進制

通過取模與除法分解,存入數組再逆序輸出:

// 十進制轉二進制核心算法
void decimalismToBinary(int num) {
    int binary[32] = {0};        // 32位整數足夠存儲
    
    // 從低位到高位分解
    for(int i=0; i<32; i++) {
        binary[i] = num % 2;
        num = num / 2;
    }
    
    // 逆序輸出(高位在前),每4位分組
    printf(" the binary of the number is: ");
    for(int j=31; j>=0; j--) {
        printf("%d", binary[j]);
        if(j%4 == 0) printf(" "); // 可讀性分組
    }
    printf("\n");
}

關鍵技術點總結

  • scanf 進制輸入:%d 十進制、%o 八進制、%x 十六進制
  • printf 進制輸出:對應 %d/%o/%x/%u
  • 負數處理:補碼形式存儲,右移為算術移位
  • 位運算優化:num >> 1 等價 num / 2,num & 1 等價 num % 2

擴展練習建議

  1. 實現通用 decToBase(num, base) 函數支持 2-36 進制
  2. 添加負數標識處理(最高位符號位)
  3. 嘗試遞歸版本實現二進制輸出
  4. 驗證 INT_MIN 轉換邊界情況
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved