안녕하세요, 작가 J입니다. 이번에는 문자열 형태의 2진수를 입력받아 10진수로 변환하는 프로그램을 작성해 보겠습니다. 이 예제는 문자열 처리와 2진수-10진수 변환의 원리를 이해하는 데 도움이 됩니다.
[Java Festival 28] 2진수를 10진수로 변환하기
문자열 형태의 2진수를 입력받아
10진수로 바꾸는 프로그램을 작성하시오.
코드 풀이 1: 기본 방식
package Ex;
public class Ex28 {
public static void main(String[] args) {
String str = "00101000"; // 입력된 2진수 문자열
// 문자열을 배열로 변환하여 각 자리수를 저장
String[] number = str.split("");
int[] binary = new int[number.length];
// 배열의 각 요소를 정수로 변환하여 역순으로 저장
for (int i = 0; i < binary.length; i++) {
binary[i] = Integer.parseInt(number[binary.length - 1 - i]);
}
int sum = 0, temp = 0;
// 2진수를 10진수로 변환
for (int i = 0; i < binary.length; i++) {
if (binary[i] == 1) {
temp = 1;
for (int j = 0; j < i; j++) {
temp *= 2;
}
sum += temp;
}
}
// 변환된 2진수 배열 출력
for (int i : binary) {
System.out.print(i);
}
System.out.print("(2) = ");
System.out.print(sum);
System.out.print("(10)");
}
}
1. 입력된 2진수 문자열 저장
- String str = "00101000";
2. 문자열을 배열로 변환하여 각 자리수를 저장
- String[] number = str.split("");
3. 배열의 각 요소를 정수로 변환하여 역순으로 저장
- for (int i = 0; i < binary.length; i++) { ... }
- 각 요소를 정수로 변환하고 배열에 역순으로 저장합니다.
4. 2진수를 10진수로 변환
- for (int i = 0; i < binary.length; i++) { ... }
- 각 자리수가 1인 경우 2의 거듭제곱을 계산하여 합산합니다.
5. 변환된 2진수 배열 출력
- for (int i : binary) { ... }
- 변환된 2진수 배열과 10진수 값을 출력합니다.
코드 풀이 2: Integer.parseInt()를 사용한 방식
package Ex;
public class Ex28Alternative {
public static void main(String[] args) {
String str = "01001101"; // 입력된 2진수 문자열
// 2진수를 10진수로 변환
int decimal = Integer.parseInt(str, 2);
// 결과 출력
System.out.println(str + "(2) = " + decimal + "(10)");
}
}
1. 입력된 2진수 문자열 저장
- String str = "00101000";
2. 2진수를 10진수로 변환
- int decimal = Integer.parseInt(str, 2);
- Integer.parseInt 메소드를 사용하여 2진수 문자열을 10진수 정수로 변환합니다.
3. 결과 출력
- System.out.println(str + "(2) = " + decimal + "(10)");
- 변환된 2진수와 10진수 값을 출력합니다.
마무리
이번 예제에서는 문자열 형태의 2진수를 입력받아 10진수로 변환하는 두 가지 방식의 프로그램을 다뤄보았습니다. 첫 번째 방식은 직접 각 자리수를 계산하는 방식이며, 두 번째 방식은 Integer.parseInt() 메소드를 사용하여 간단하게 변환하는 방식입니다. 두 가지 방법 모두 이해하시는데 도움이 되길 바랍니다.
프로그래밍을 시작하는 모든 분께 이 예제가 도움이 되길 바랍니다. 앞으로도 다양한 유형의 문제를 통해 여러분의 학습을 도울 수 있도록 노력하겠습니다. 감사합니다!
'프로그래밍 기초 > Java Festival' 카테고리의 다른 글
[Java Festival] 30. 알파벳 빈도수 구하기 (0) | 2024.07.07 |
---|---|
[Java Festival] 29. 두 정수의 합 맞추기 게임 (0) | 2024.07.05 |
[Java Festival] Bonus06. 거듭제곱 계산하기 (0) | 2024.07.05 |
[Java Festival] 27. Java 시험 문제 채점하기 (0) | 2024.07.05 |
[Java Festival] 26. 세 자리 수의 곱셈 계산 (0) | 2024.07.05 |