알고리즘

[Java] 10진수 2진수로 변환

코북 2022. 2. 8. 15:10

 

 안녕하세요 코북입니다. 오늘은 10진수를 2진수로 변환하는 코드를 작성해봤습니다. 이 문제를 풀려면 십진법 수를 이진법 수로 나타내는 방법에 대해 알아야 하는데요. 십진법 수를 몫이 0이 될 때까지 2로 나누어서 생긴 나머지를 역순으로 적으면 됩니다. 

 

public class Java17 {
	public static void main(String[] agrs) {
		
		Scanner sc = new Scanner(System.in);
		System.out.print("숫자입력 >> ");
		int a = sc.nextInt();
		
		ArrayList<Integer> list = new ArrayList<Integer>(); 
		
		// 10진법으로 나타낸 수를 2진법으로 타나내려면
		// 몫이 0이 될 때까지 계속 2로 나누어서 생긴 나머지를 역순으로 적으면 된다
		while(true)
		{
			if(a%2==1) // 나머지가 1인 경우
			{
				list.add(1);
			}
			else if (a%2==0) // 나머지가 0인 경우
			{
				list.add(0); 
			}
			
			a /= 2;

			if(a==0) {
				break;
			}
		}
		
		// 역순으로 출력
		for(int i=0; i<list.size(); i++)
		{
			System.out.print(list.get(list.size()-i-1));
		}
		
	}
}

 

 이해를 돕기 위한 그림과 코드입니다. 몇 번 나누어야 하는지 정확하지 않기 때문에 for문이 아닌 while문을 사용하였습니다. 역순으로 출력하기 위해 값을 저장할 필요가 있다고 생각이 들어 ArrayList를 사용하여 값을 저장한 후 역순으로 출력하였습니다.