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