Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 2진수를 10진수로 변환하는 프로그램 구현하기

2진수(binary number)가 입력으로 주어졌을 때, 이를 10진수(decimal number)로 변환하는 것이 이 글의 목표입니다.

2진수와 10진수의 개념

컴퓨터에서 10진수는 밑(base)이 10인 숫자 체계로, 0부터 9까지의 숫자로 표현됩니다. 반면 2진수는 밑이 2인 숫자 체계로, 0과 1이라는 두 개의 비트만 사용하여 수를 나타냅니다.

2진수를 10진수로 변환하는 원리

2진수를 10진수로 변환하려면 다음과 같은 절차를 따릅니다. 먼저 가장 오른쪽 자릿수부터 왼쪽 방향으로 각 자릿수를 하나씩 추출합니다. 그런 다음 각 자릿수에 2의 거듭제곱(0승부터 시작하여 1씩 증가)을 곱하고, 마지막 자릿수는 (자릿수 개수 − 1)승이 됩니다. 이렇게 곱한 값들을 모두 더하면 최종적인 10진수 값을 얻을 수 있습니다.

예시

입력값이 1010일 때의 변환 과정은 다음과 같습니다.

입력: 1010
    0 X 2^0 = 0
    1 X 2^1 = 2
    0 X 2^2 = 0
    1 X 2^3 = 8
출력: 총합 = 0 + 2 + 0 + 8 = 10

알고리즘

Start
Step1-> 2진수를 10진수로 변환하는 함수 선언
    int convert(string str)
    string n = str 설정
    int val = 0 설정
    int temp = 1 설정
    int len = n.length() 설정
    Loop For int i = len - 1; i >= 0; i--
       IF n[i] == '1'
          val += temp
       End
       temp = temp * 2
    End
    return val
Step 2-> main() 함수에서
    string val = "11101" 설정
    convert(val) 호출
Stop

C++ 코드 구현

#include <iostream>
#include <string>
using namespace std;
// 2진수를 10진수로 변환하는 함수
int convert(string str) {
    string n = str;
    int val = 0;
    int temp = 1;
    int len = n.length();
    for (int i = len - 1; i >= 0; i--) {
        if (n[i] == '1')
        val += temp;
        temp = temp * 2;
    }
    return val;
}
int main() {
    string val = "11101";
    cout<<val<<" 을(를) 10진수로 변환한 결과 : "<<convert(val);
}

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

11101 을(를) 10진수로 변환한 결과 : 29

이처럼 문자열 형태의 2진수를 오른쪽 끝자리부터 순회하면서 해당 자릿수가 '1'일 때만 현재의 2의 거듭제곱 값을 누적하고, 매 반복마다 거듭제곱 값을 2배씩 늘려가는 방식으로 손쉽게 10진수 변환을 구현할 수 있습니다.