안녕하세요, 작가 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진수로 변환하는 방법은 다음과 같습니다:
- 10진수 숫자를 2로 나눈 나머지를 기록합니다.
- 몫을 2로 나누고, 다시 나머지를 기록합니다.
- 몫이 0이 될 때까지 이 과정을 반복합니다.
- 기록한 나머지들을 역순으로 읽으면 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진수로 변환하는 로직을 구현하는 방법을 익힐 수 있었습니다.
프로그래밍을 시작하는 모든 분께 이 예제가 도움이 되길 바랍니다. 앞으로도 다양한 유형의 문제를 통해 여러분의 학습을 도울 수 있도록 노력하겠습니다. 감사합니다!
'프로그래밍 기초 > Java Festival' 카테고리의 다른 글
[Java Festival] 22. 계단식 별 출력하기 (0) | 2024.07.04 |
---|---|
[Java Festival] 21. 두 숫자 사이의 최소 거리를 찾기 (0) | 2024.07.04 |
[Java Festival] 19. 단 수와 곱해질 수를 입력받아 구구단 출력하기 (0) | 2024.06.30 |
[Java Festival] Bonus 04. 배열의 인덱스 수만큼 별 출력하기 (0) | 2024.06.30 |
[Java Festival] 18. 중복 없이 숫자를 뽑는 로또 프로그램 (0) | 2024.06.30 |