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

C#으로 10진수를 8진수로 변환하는 방법

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진수에도 동일하게 적용할 수 있으며, 배열 크기를 충분히 확보해 두면 큰 수도 문제없이 변환할 수 있습니다.