10진수를 8진수로 변환하는 원리
C#에서 10진수를 8진수로 변환하려면 나눗셈과 나머지 연산을 반복적으로 활용해야 합니다. 8진수는 밑(base)이 8인 기수법이기 때문에, 주어진 수를 8로 계속 나누면서 나머지를 차례대로 모으면 됩니다.
먼저 변환할 10진수 값을 설정합니다.
int decVal = 40;
다음으로 몫을 저장할 변수를 선언하고 decVal 값을 할당한 뒤, 8로 나눈 나머지를 구하는 작업을 while 루프로 반복 처리합니다.
while (quot != 0) {
octalVal[i++] = quot % 8;
quot = quot / 8;
}루프가 종료되면 배열에는 낮은 자릿수부터 순서대로 저장되어 있으므로, 역순으로 출력하면 최종적인 8진수 결과를 얻을 수 있습니다.
예제 코드
아래 전체 코드를 실행하여 10진수를 8진수로 변환하는 과정을 직접 확인해 보세요.
using System;
class Demo {
public static void Main() {
int decVal, quot, i = 1, j;
int[] octalVal = new int[80];
decVal = 40;
quot = decVal;
Console.WriteLine("Decimal Number:{0}",decVal);
while (quot!= 0) {
octalVal[i++] = quot % 8;
quot = quot / 8;
}
Console.Write("Octal Number: ");
for (j = i - 1; j > 0; j--)
Console.Write(octalVal[j]);
Console.Read();
}
}실행 결과
Decimal Number:40 Octal Number: 50
변환 과정 살펴보기
위 코드의 동작 원리를 단계별로 살펴보겠습니다.
첫째, 40을 8로 나누면 몫은 5, 나머지는 0입니다. 둘째, 남은 몫 5를 다시 8로 나누면 몫은 0, 나머지는 5입니다. 셋째, 몫이 0이 되면 루프가 종료되고, 지금까지 구한 나머지(0, 5)를 역순으로 읽으면 50이 됩니다. 따라서 10진수 40의 8진수 표현은 50입니다.
이 방식은 임의의 10진수에도 동일하게 적용할 수 있으며, 배열 크기를 충분히 확보해 두면 큰 수도 문제없이 변환할 수 있습니다.