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

C#으로 2진수를 10진수로 변환하는 방법 (예제 코드 포함)

C#으로 2진수를 10진수로 변환하기

2진수(binary)는 0과 1만으로 수를 표현하는 체계로, 프로그래밍에서 자주 마주치는 개념입니다. 이 글에서는 별도의 내장 함수 없이 C#의 반복문과 기본 산술 연산만으로 2진수를 10진수(decimal)로 변환하는 방법을 단계별로 살펴보겠습니다.

핵심 원리는 간단합니다. 2진수의 각 자릿수를 오른쪽부터 하나씩 추출하고, 그 자릿수에 해당하는 2의 거듭제곱(1, 2, 4, 8...)을 곱한 뒤 모두 더하면 됩니다.

1단계: 2진수 값 설정

먼저 변환할 2진수 값을 int 변수에 저장합니다. 여기서는 2진수 101을 사용합니다.

int num = 101;

2단계: 원본 값 보관

반복문 안에서 num 값은 계속 변경되므로, 최종 출력을 위해 원본 값을 새 변수에 미리 할당해 둡니다.

binVal = num;

3단계: 반복문으로 자릿수 변환

num이 0보다 큰 동안 아래 로직을 반복 실행하며 자릿수와 밑수(base value)를 처리합니다.

while (num > 0) {
    rem = num % 10;
    decVal = decVal + rem * baseVal;
    num = num / 10;
    baseVal = baseVal * 2;
}

각 코드 줄이 수행하는 역할은 다음과 같습니다.

  • rem = num % 10; — 10으로 나눈 나머지를 구해 가장 오른쪽 자릿수(0 또는 1)를 추출합니다.
  • decVal = decVal + rem * baseVal; — 추출한 자릿수에 현재 밑수(2의 거듭제곱)를 곱해 결과에 누적합니다.
  • num = num / 10; — 이미 처리한 자릿수를 제거하기 위해 정수 나눗셈을 수행합니다.
  • baseVal = baseVal * 2; — 다음 자릿수를 위해 밑수를 2배씩 증가시킵니다.

전체 예제 코드

위 과정을 모두 합친 완성된 C# 코드는 다음과 같습니다.

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

namespace Demo {
    class MyApplication {
        static void Main(string[] args) {
            int num, binVal, decVal = 0, baseVal = 1, rem;
            num = 101;
            binVal = num;

            while (num > 0) {
                rem = num % 10;
                decVal = decVal + rem * baseVal;
                num = num / 10;
                baseVal = baseVal * 2;
            }

            Console.Write("Binary Number: " + binVal);
            Console.Write("\nDecimal: " + decVal);
            Console.ReadLine();
        }
    }
}

실행 결과

Binary Number: 101
Decimal: 5

2진수 101은 (1 × 4) + (0 × 2) + (1 × 1) = 5이므로, 프로그램이 정확히 10진수 5로 변환한 것을 확인할 수 있습니다. 이처럼 나머지 연산과 정수 나눗셈만으로도 진법 변환 로직을 손쉽게 구현할 수 있습니다.