進位的轉換

做法:

進位間的轉換用簡單的除法即可以得出(長除法),將要轉換的數值不斷地除以基底數,
直到最後的商小於基底數,結果就是最後的商+最後的餘數+最後第二次的餘數+…+第一次的餘數,
若是把除的過程中的餘數輸出,結果剛好是相反的,因此,我們將餘數先放到一個陣列中,
整個除完後,最後的商放入陣列,再用一個迴圈將此陣列的值從右到左的方式印出。

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


void main(void){
    char hex[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

    int num;
    cout << "請輸入一數:" ; cin >> num;
    int base;
    cout << "請輸入進位數(2, 8, 16):" ; cin >> base;
    int r; 
    int output[100];
    int counter = 0;
    while (num >= base) {
        r = num % base; //取餘數
        output[counter++] = r;
        num = num / base;//取商數
    }
    output[counter] = num;

    while (counter >= 0) cout << hex[  output[counter--]   ]; 


    system("pause");
}

results matching ""

    No results matching ""