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

C#으로 이진수를 십진수로 변환하는 방법

C#에서 이진수(binary)를 십진수(decimal)로 변환하는 것은 자릿값의 개념만 이해하면 비교적 간단하게 구현할 수 있습니다. 이 글에서는 while 루프를 활용해 입력된 이진수의 나머지(remainder)를 구하고, 각 자릿수에 해당하는 밑(base) 값을 곱한 뒤 누적하여 십진수를 계산하는 방법을 소개합니다.

변환 원리

이진수를 십진수로 바꾸는 핵심 아이디어는 다음과 같습니다.

1. while 루프를 돌면서 이진수의 마지막 자릿수(나머지)를 구합니다.
2. 구한 나머지에 현재 밑 값(1, 2, 4, 8...)을 곱합니다.
3. 결과를 십진수 변수에 더해 누적합니다.
4. 숫자를 10으로 나눠 다음 자릿수로 이동하고, 밑 값은 2배씩 증가시킵니다.

이 과정을 코드로 표현하면 다음과 같습니다.

while (val > 0) {
    remainder = val % 10;
    myDecimal = myDecimal + remainder * baseVal;
    val = val / 10;
    baseVal = baseVal * 2;
}

전체 예제 코드

아래는 위 로직을 포함한 C# 전체 소스 코드입니다. 이진수 1010을 입력값으로 사용해 십진수로 변환합니다.

using System;
using System.Collections.Generic;
using System.Text;

namespace Demo {
    class toBinary {
        static void Main(string[] args) {
            int val = 1010, myBinary, remainder;
            int myDecimal = 0, baseVal = 1;

            myBinary = val;

            while (val > 0) {
                remainder = val % 10;
                myDecimal = myDecimal + remainder * baseVal;
                val = val / 10;
                baseVal = baseVal * 2;
            }

            Console.Write("Binary Number : " + myBinary);
            Console.Write("\nConverted to Decimal: " + myDecimal);
            Console.ReadLine();
        }
    }
}

실행 결과

위 프로그램을 실행하면 다음과 같은 출력을 확인할 수 있습니다.

Binary Number : 1010
Converted to Decimal: 10

코드 설명

이진수 1010은 각 자릿수가 오른쪽부터 1, 2, 4, 8의 가중치를 가집니다. 따라서 계산 과정은 다음과 같습니다.

- 첫 번째 반복: 나머지 0 × 1 = 0
- 두 번째 반복: 나머지 1 × 2 = 2
- 세 번째 반복: 나머지 0 × 4 = 0
- 네 번째 반복: 나머지 1 × 8 = 8

모든 값을 더하면 0 + 2 + 0 + 8 = 10이 되어, 이진수 1010이 십진수 10으로 정확히 변환됩니다.