이번 글에서는 숫자 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)을 지정하면 해당 진수의 문자열 표현을 바로 얻을 수 있어 실무에서 더욱 편리합니다.