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

C++에서 8진수를 10진수로 변환하는 프로그램 – 원리부터 예제 코드까지

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

컴퓨터에서 10진수(decimal)는 밑(base)이 10인 수 체계로, 0부터 9까지의 숫자로 표현됩니다. 반면 8진수(octal)는 밑이 8인 수 체계로, 0부터 7까지만의 숫자를 사용합니다.

8진수를 10진수로 변환하는 단계

  • 숫자의 오른쪽 끝자리부터 왼쪽으로 한 자리씩 추출하고, 각 자릿수에 0부터 시작하여 (자릿수 개수 − 1)까지 1씩 증가하는 거듭제곱을 곱합니다.
  • 8진수는 밑이 8이므로, 거듭제곱의 밑도 8을 사용합니다.
  • 입력 숫자의 각 자릿수에 밑과 거듭제곱을 곱한 결과를 저장합니다.
  • 모든 곱셈 값을 더하면 최종 결과인 10진수를 얻을 수 있습니다.

예를 들어 8진수 451을 10진수로 변환하는 과정은 다음과 같습니다.

입력: 451
  1 → 1 × 8^0 = 1
  5 → 5 × 8^1 = 40
  4 → 4 × 8^2 = 256
출력: 총합 = 1 + 40 + 256 = 297

알고리즘

시작
단계 1 → 8진수를 10진수로 변환하는 함수 선언
    int convert(int num)
        int temp = num 설정
        int val = 0 설정
        int base = 1 설정
        int count = temp 설정
        While (count) 동안 반복
            int digit = count % 10 설정
            count = count / 10 설정
            val += digit * base 설정
            base = base * 8 설정
        반복 종료
        return val 반환
단계 2 → main() 함수에서
    int num = 45 설정
    convert(num) 호출
종료

C++ 구현 예제

#include <iostream>
using namespace std;
// 8진수를 10진수로 변환하는 함수
int convert(int num) {
    int temp = num;
    int val = 0;
    int base = 1;
    int count = temp;
    while (count) {
        int digit = count % 10;
        count = count / 10;
        val += digit * base;
        base = base * 8;
    }
    return val;
}
int main() {
    int num = 45;
    cout << "after conversion value is " << convert(num);
}

실행 결과

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

after conversion value is 37

즉, 8진수 45는 4 × 8¹ + 5 × 8⁰ = 32 + 5 = 37로 계산되어 10진수 값 37이 출력되는 것을 확인할 수 있습니다.