본문 바로가기
Language/C#

[c#] 2진수 변환

by ninanio3 2012. 3. 28.

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