C++/공부 정리

진법 전환(진수 to 진수)

sondiaa 2023. 7. 3. 16:28

10진수에서의 n진수로 전환은 아래와 같이 진행할 수 있다.

#include <iostream>
using namespace std;
int main() {
    int N, j, index = 0;
    int jin[100] = {0,};
    cin >> N >> j;
    while(1){
        if(N < j){
            jin[index] = N;
            break;
        }
        jin[index++] = N % j;
        N /= j;
    }
    for(int i=index; i>=0; i++){
        cout << jin[i];
    }
    return 0;
}

 

좀 더 본격적으로 하면 진수와 진수간의 전환은

n진수를 10진수로 변환하고 해당 10진수를 m진수로 변환하면 된다.

#include <iostream>
using namespace std;
int main() {
    string n;
    int a, b, num10 = 0;
    cin >> a >> b;
    cin >> n;
    //10진수 변환
    for(int i=0; n.length(); i++){
        num10 = num10 * a + (n[i] - '0');
    }

    // 다시 b진수로 변환
    int jin[100] = {0, }, index = 0;
    while(1){
        if(num10 < b){
            jin[index] = num10;
            break;
        }
        jin[index++] = num10 % b;
        num10 /= b;
    }

    for(int i = index; i>= 0; i--){
        cout << jin[i];
    }
    return 0;
}