C#에서 10진수(decimal)를 2진수(binary)로 변환하는 원리는 간단합니다. 주어진 10진수 값을 2로 계속 나누면서 나머지를 기록하고, 그 결과를 역순으로 이어 붙이면 2진수가 됩니다.
1단계: 10진수 값 설정
먼저 변환할 10진수 값을 다음과 같이 설정합니다.
decVal = 34;
Console.WriteLine("Decimal: {0}", decVal);2단계: while 루프로 나머지 계산
값이 1 이상일 때까지 2로 나누는 과정을 반복하며, 각 단계에서의 나머지를 ToString() 메서드로 문자열에 추가합니다.
while (decVal >= 1) {
val = decVal / 2;
a += (decVal % 2).ToString();
decVal = val;
}나눗셈 연산자(/)로 몫을 구하고, 모듈로 연산자(%)로 나머지를 구해 차례대로 문자열 변수 a에 저장합니다.
3단계: 문자열 뒤집기
위 과정에서 구한 나머지는 낮은 자리수부터 기록되므로, 빈 문자열 변수를 선언한 뒤 루프를 돌며 순서를 거꾸로 뒤집어야 올바른 2진수가 됩니다.
string binValue = "";
for (int i = a.Length - 1; i >= 0; i--) {
binValue = binValue + a[i];
}전체 예제 코드
C#에서 10진수를 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 = 34;
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: 34 Binary: 100010
10진수 34는 2진수로 100010임을 확인할 수 있습니다.
참고: Convert.ToString() 활용하기
.NET에서 제공하는 내장 메서드를 사용하면 위 과정을 한 줄로 처리할 수도 있습니다.
string binValue = Convert.ToString(34, 2); // 결과: 100010
Convert.ToString(값, 진법) 형태로 호출하면 지정한 진법의 문자열을 바로 얻을 수 있어, 실무에서는 더욱 간편하게 활용할 수 있습니다.