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

十進制轉二進制:C++ 經典演算法實作與優化思路

     編輯:關於C語言

基本演算法邏輯

十進制整數轉二進制的核心思路是反覆除以 2 取餘數,餘數即為二進制位元(從最低位到最高位),最後逆序輸出。以下是簡潔的 C++ 實作:

#include <iostream>
#include <cmath>
using namespace std;

void Dec_Bin(int num) {
    int temp[255], i = 0;
    while (num > 0) {
        temp[i] = num % 2;
        num = floor(num / 2);  // 等同 num /= 2
        i++;
    }
    cout << "Bin is:";
    while (i > 0) {
        cout << temp[i-1];
        i--;
    }
    cout << endl;
}

int main() {
    int num;
    cout << "Please input a DEC number:";
    cin >> num;
    Dec_Bin(num);
    return 0;
}

代碼優化建議

  • 移除 floor:整數除法自動截斷,num /= 2 即可,效率更高。
  • 動態容器:改用 std::vector<int> 或 std::string 避免固定陣列大小限制。
  • 位運算加速:num & 1 取代 num % 2,num >>= 1 取代除法,現代編譯器通常會自動優化。
  • 處理 0 與負數:輸入 0 應輸出 "0";負數可採二補數表示或加負號。

優化版範例

void Dec_Bin_Optimized(int num) {
    if (num == 0) { cout << "Bin is: 0" << endl; return; }
    string binary;
    bool negative = num < 0;
    unsigned int n = negative ? -num : num;  // 處理 INT_MIN 需額外小心
    while (n) {
        binary.push_back('0' + (n & 1));
        n >>= 1;
    }
    if (negative) cout << '-';
    reverse(binary.begin(), binary.end());
    cout << "Bin is: " << binary << endl;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved