10진수를 2진수로 만들어보자.
일단 입력받은 수를 2로 나눈 나머지를 ArrayList에 배열로 차곡차곡 쌓는다.
그리고 입력받은 수가 0이 될때까지 while로 뺑뺑이를 돌려주면 된다. ㅎㅎ
2 | 300
2 | 150 ...0
2 | 75 ....0
2 | 37 ....1
2 | 18 ....1
2 | 9 ....0
2 | 4 ....1
2 | 2 ....0
1 ....0
100101100(2) 결과적으로 값을 이렇게 만들어야 한다.
연산자 중에 %는 나눈 값의 나머지를 나타내주니, %를 써주고, 값을 2로 다시 나눠주는 방법을 쓰면 해결된다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HEK_Exer;
using System.Collections;
/*
* 문제 내용 : 10진수를 2진수로 만들어보자.
* 학습 내용 : Collection 계열 ArrayLIst를 만들어보자.
* 힌트 내용 : Array + List 배열과 비슷하면서 순서대로 저장하고 사용할 수 있는 클래스다.
* */
namespace HEK_Exercise
{
public class Program
{
public static void Main()
{
Console.WriteLine("10진수를 2진수로 변환합니다. 숫자를 입력하세요");
int num = Convert.ToInt32(Console.ReadLine());
//HEK_Exer.HEK_Exer exer = new HEK_Exer.HEK_Exer();
//exer.binNum(num);
binNum(num);
}
public static void binNum(int Num)
{
ArrayList binArr = new ArrayList();
while (Num != 0)
{
int reminder = Num % 2;
binArr.Add(reminder);
Num /= 2;
Console.WriteLine(Num);
}
binArr.Reverse();
for (int i = 0; i < binArr.Count; i++)
{
Console.Write(binArr[i]);
}
}
}
}
여기서 팁... ArrayList인 binArr에서, .Add를 하면 삽입하는 숫자가 배열의 뒤에 붙고, Insert를 하면 배열 앞쪽에 붙일 수 있다. Insert를 사용하려면 index 값과 value를 넣어주어야 한다. 그러면 value가 지정된 index의 위치에 삽입을 한다. binArr.Reverse()처럼 뒤집어주지 않아도 된다.
그 코드는
binArr.Insert(0, reminder);
이걸 갖다 붙여주면 된다.
'Language > C#' 카테고리의 다른 글
log4net 폴더를 날짜별로 만들기 (0) | 2017.07.06 |
---|---|
디버깅 걸지 않고 예외 throw 하는 방법 (0) | 2014.04.10 |
[c#]ArrayList (0) | 2012.03.22 |
[c#]char 사용법 (0) | 2012.03.20 |
[c#]string 사용법 (0) | 2012.02.17 |