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이 출력되는 것을 확인할 수 있습니다.