Gidhub BE Developer

진법 변환하기

2017-10-18
goodGid

10진수 -> 2진수 변환

 int tenConvertTwo(int num){
    int result = 0;
    for(int i=1; num>0; i*=10){
        int tmp = num % 2;
        result += tmp * i;
        num /= 2;
    }
    return result;
  }

2진수 -> 10진수 변환

int twoConvertTen(int num){
    int result = 0;
    for(int i=1; num>0; i*=2){
        int tmp = num % 2;
        result += tmp * i;
        num /= 10;
    }
    return result;
}
 int twoConvertTen(int num){
    int result = 0, mul = 1;
    while(num>0){
        if(num%2)
            result += mul;
        mul *= 2;
        num /= 10;
    }
    return result;
  }

특정 진법으로 바꾸기

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

// b is base
// d is decimal
long long ChangeJinBub(int base, int decimal){
    int i=99;
    char c[17]="0123456789ABCDEF";
    char result[100];
    
    // result[] 마지막 위치에 Null 문자 넣기
    result[i] = '\0'; // i=99
    
    while( decimal !=0 ){
        result[--i] = c[ decimal % base ]; // result[] <-- 나머지
        decimal /= base; // 몫
    }
    return stol(&result[i]); // #include <cstdlib> 선언
}

/*
 ChangeJinBub의 Return Type을
 int로 하니까 1024를 2진법으로 바꾸면
 범위가 넘어가서 터진다.
 그래서 long long으로 선언 !
 */

int main(){
    long long ans;
    int b,d;
    cin >> b >> d;
    ans = ChangeJinBub(b,d);
    cout << ans << endl;
}


Input
2 10
4 10

Output
1010
22

Recommend

Index