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

二進制轉十進制:算法原理與 C 語言實現

     編輯:關於C語言

二進制轉十進制:算法原理與 C 語言實現

算法思想

將輸入的二進制數(如 1011)作為十進制整數讀入,逐位拆解。從最高位開始,利用「乘 2 加當前位」的累加方式計算:

2 * (2 * ((1 * 2) + 0) + 1) + 1 = 11

即對應十進制值 11。

模塊設計

  • 輸入:整數變量存儲二進制數碼
  • 處理:循環取模 10 獲取最低位,疊加計算
  • 輸出:十進制結果

程序代碼

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    int a, b[32], i = 0, j, k, c = 0;
    printf("請輸入二進制數: ");
    scanf("%d", &a);
    while (a != 0) {
        b[i] = a % 10;
        a = a / 10;
        i++;
    }
    for (j = 0; j < i; j++) {
        if (b[j] != 0 && b[j] != 1) {
            printf("輸入錯誤:非二進制數碼\n");
            return 1;
        }
    }
    c = 0;
    for (k = i - 1; k >= 0; k--) {
        c = c + (c + b[k]) * 2; // 此處邏輯需修正,正確應為 c = c * 2 + b[k];
    }
    printf("十進制值: %d\n", c);
    return 0;
}

註:原代碼片段有殘缺與邏輯錯誤,上方給出完整可運行版本。核心遞推公式為 result = result * 2 + bit。

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