1. 진법 변환 개념

https://smallpants.tistory.com/176

 

2. C++ style Code

10진수 -> 2진수

1) bitset 사용방식

#include <iostream>
#include <bitset>

void decimal2binary()
{
    int n2bit = 5;
    std::cout << "5는 2진수로 : " << std::bitset<8 * sizeof(n2bit)>(n2bit) << std::endl;
}

 

2) 직접 구현 방식

#include <iostream>

void decimal2binary()
{
    // 2-1) 소수점 위 변환
    int result = 0;
    for (int i = 1; n2bit >= 1; i *= 10) {
        result = (n2bit % 2) * i + result;
        n2bit /= 2;
    }
    std::cout << "5는 2진수로 : " << result << std::endl;

    // 2-2) 소수점 아래 변환
    double d2bit = 0.625;
    std::cout << "0.625는 2진수로 0.";
    while (d2bit != 0) {
        d2bit *= 2;
        std::cout << (int)d2bit;

        if (d2bit >= 1) d2bit -= 1;
    }
    std::cout << std::endl;
}

 

2진수 -> 10진수

1) bitset 사용방식

#include <iostream>
#include <bitset>

void binary2decimal()
{   
    // bitset 객체에 넣고 to_ulong() 하면 끝
    int num1 = 10;
    int num2 = 15;

    std::bitset<32> b1(num1);  // b1 = 1010
    std::bitset<32> b2(num2);  // b2 = 1111

    std::cout << b1 << std::endl; // 출력시 000000.....1010
    std::cout << b1.to_ulong() << std::endl; // 출력시 10진수 10
}

 

2) 직접 구현 방식

#include <iostream>

void binary2decimal()
{   
    int result = 0;
    int bit = 100; // 2진수 100이니 10진수로 4
    for (int j = 0; bit >= 1; j++) {
        result += (bit % 10) * pow(2, j);
        bit /= 10;
    }
    std::cout << "이진수 100은 10진수로 " << result << std::endl;