Algorithm/이론

[Algorithm] C++ - 10진수, 2진수 진법 변환

유제필 2022. 11. 20. 12:06

진법 변환

C++에서 각 진법 변환에 대한 예제이다.

 

10진수에서 2진수 변환 에제 코드

#include <iostream>

using namespace std;

int ToBinary(int number);

int main()
{
    int n;
    
    cout << "변환할 숫자 입력 : ";
    cin >> n;
    
    cout << "10진수" << n << "에서 2진수 " << ToBinary(n) << "변환" << endl;

    return 0;
}

int ToBinary(int number)
{
    int result = 0;
    
    // 반복 시 마다 1자리씩 늘리도록 i * 10
    for(int i = 1; number > 0; i *= 10) {
        
        // 홀수 짝수 인지 판단(0, 1)
        int binary = number % 2;
        
        // 2진수 자릿수 추가를 위하여 * i
        result += binary * i;
        
        // number를 2씩 나눔
        number /= 2;
    }
    
    return result;
}

 

2진수에서 10진수 변환 에제 코드

#include <iostream>

using namespace std;

int ToDecimal(int number);

int main()
{
    int n;
    
    cout << "변환할 숫자 입력 : ";
    cin >> n;
    
    cout << "2진수" << n << "에서 10진수 " << ToDecimal(n) << "변환" << endl;

    return 0;
}

int ToDecimal(int number)
{ 
    int result = 0, n = 1;
    
    while(number > 0) {
        
        // 홀수일 경우 자릿수 값 확인하여 더하기
        if(number % 2 != 0) {
            
            result += n;
        }
        
        // 2진수 값을 더하기 위해 2씩 곱하기
        n *= 2;
        
        // 1자리씩 확인하기 위해 나누기
        number /= 10;
    }
    
    return result;
}