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

C#에서 10진수(Decimal)를 2진수(Binary)로 변환하는 방법

이번 글에서는 숫자 48을 2진수로 변환하는 과정을 예시로 살펴보겠습니다.

10진수를 2진수로 변환하는 핵심 원리는 간단합니다. 나누기 연산자(/)와 나머지 연산자(%)를 사용해 값을 2로 계속 나누고, 각 단계의 나머지를 차례로 기록하는 것입니다. 몫이 1보다 작아질 때까지 반복하면 변환이 완료됩니다.

decVal = 48;

while (decVal >= 1) {
    val = decVal / 2;
    a += (decVal % 2).ToString();
    decVal = val;
}

루프가 진행되는 동안 나머지 값들은 역순으로 문자열 a에 저장됩니다. 따라서 마지막에 문자열을 거꾸로 뒤집어 주어야 올바른 2진수 값을 얻을 수 있습니다.

전체 예제 코드

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

namespace Demo {
    class MyApplication {
        static void Main(string[] args) {
            int decVal;
            int val;
            string a = "";
            decVal = 48;
            Console.WriteLine("Decimal = {0}", decVal);

            while (decVal >= 1) {
                val = decVal / 2;
                a += (decVal % 2).ToString();
                decVal = val;
            }
            string binValue = "";

            for (int i = a.Length - 1; i >= 0; i--) {
                binValue = binValue + a[i];
            }
            Console.WriteLine("Binary = {0}", binValue);
            Console.Read();
        }
    }
}

실행 결과

Decimal = 48
Binary = 110000

48을 2진수로 변환한 결과는 110000입니다. 검산해 보면 32 + 16 = 48이므로 정확한 값임을 확인할 수 있습니다.

참고: Convert.ToString() 메서드 활용하기

직접 알고리즘을 구현하지 않고도 C#의 내장 메서드를 사용하면 한 줄로 간단하게 변환할 수 있습니다.

int decVal = 48;
string binValue = Convert.ToString(decVal, 2); // 결과: "110000"

Convert.ToString()의 두 번째 인자에 진법(2)을 지정하면 해당 진수의 문자열 표현을 바로 얻을 수 있어 실무에서 더욱 편리합니다.