본문 바로가기
프로그래밍 기초/Java Festival

[Java Festival] 20. 10진수 정수를 2진수로 변환하기

by 제이투더문 2024. 6. 30.

 

 안녕하세요, 작가 J입니다. 이번에는 10진수 정수를 입력받아 2진수로 변환하는 프로그램을 작성해 보겠습니다. 이 예제는 10진수와 2진수에 대한 기본적인 이해와 함께, 변환 로직을 구현하는 데 도움이 될 것입니다.

 

[Java Festival 20] 10진수 정수를 2진수로 변환하기

10진수 정수를 입력받아

2진수로 변환해서 출력하시오.

 

 

 

 

10진수와 2진수

  • 10진수 (Decimal): 우리가 일상적으로 사용하는 수 체계로, 0부터 9까지의 숫자를 사용하여 수를 표현합니다. 예를 들어, 10진수 10은 1 * 10^1 + 0 * 10^0으로 계산됩니다.
  • 2진수 (Binary): 컴퓨터가 사용하는 수 체계로, 0과 1 두 개의 숫자를 사용하여 수를 표현합니다. 예를 들어, 2진수 1010은 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0으로 계산됩니다.

10진수를 2진수로 변환하는 로직

10진수를 2진수로 변환하는 방법은 다음과 같습니다:

 

  1. 10진수 숫자를 2로 나눈 나머지를 기록합니다.
  2. 몫을 2로 나누고, 다시 나머지를 기록합니다.
  3. 몫이 0이 될 때까지 이 과정을 반복합니다.
  4. 기록한 나머지들을 역순으로 읽으면 2진수가 됩니다.

 

코드 풀이

코드 풀이 1: 배열을 사용한 방식

package Ex;

import java.util.Scanner;

public class Ex20 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 사용자로부터 10진수 정수를 입력받기
        System.out.println("숫자입력>>");
        int num = sc.nextInt();
        int[] decimal = new int[32]; // 32비트 정수를 위한 배열

        int i = 0;

        // 10진수를 2진수로 변환
        while (num > 0) {
            decimal[i++] = num % 2;
            num /= 2;
        }

        // 2진수 출력 (역순으로 출력, 공백 없이 출력)
        for (int j = i - 1; j >= 0; j--) {
            System.out.print(decimal[j]);
        }

        sc.close();
    }
}

 

 

코드 설명

1. 사용자 입력 받기

 

  • Scanner sc = new Scanner(System.in);: 사용자 입력을 받기 위해 Scanner 객체를 생성합니다.
  • System.out.println("숫자입력>>");: 사용자에게 입력을 요청합니다.
  • int num = sc.nextInt();: 입력받은 10진수 정수를 num 변수에 저장합니다.

2. 10진수를 2진수로 변환

 

  • int[] decimal = new int[32];: 변환된 2진수를 저장할 배열을 생성합니다.
  • int i = 0;: 배열의 인덱스를 추적하는 변수입니다.
  • while (num > 0): 10진수를 2로 나누고 나머지를 기록하는 과정을 반복합니다.
  • decimal[i++] = num % 2;: 나머지를 배열에 저장합니다.
  • num /= 2;: 몫을 업데이트합니다.

3. 2진수 출력

 

  • for (int j = i - 1; j >= 0; j--): 배열을 역순으로 읽어 2진수 문자열을 출력합니다.
  • System.out.print(decimal[j]);: 각 비트를 공백 없이 출력합니다.

 

코드 풀이 2: 내장 메서드를 사용한 방식

 

package Ex;

import java.util.Scanner;

public class Ex20Alternate {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 사용자로부터 10진수 정수를 입력받기
        System.out.println("숫자입력>>");
        int num = sc.nextInt();

        // 내장 메서드를 사용하여 10진수를 2진수로 변환
        String binary = Integer.toBinaryString(num);

        // 2진수 출력
        System.out.print(binary);

        sc.close();
    }
}

 

 

내장 메서드를 사용하여 10진수를 2진수로 변환

  • String binary = Integer.toBinaryString(num);: Integer.toBinaryString() 메서드를 사용하여 10진수를 2진수로 변환합니다.

 

마무리

 이번 예제에서는 10진수 정수를 입력받아 2진수로 변환하는 두 가지 프로그램을 작성해 보았습니다. 이를 통해 10진수와 2진수의 개념을 이해하고, 10진수를 2진수로 변환하는 로직을 구현하는 방법을 익힐 수 있었습니다.

 

 프로그래밍을 시작하는 모든 분께 이 예제가 도움이 되길 바랍니다. 앞으로도 다양한 유형의 문제를 통해 여러분의 학습을 도울 수 있도록 노력하겠습니다. 감사합니다!