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

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

by 제이투더문 2024. 7. 5.

 

 안녕하세요, 작가 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() 메소드를 사용하여 간단하게 변환하는 방식입니다. 두 가지 방법 모두 이해하시는데 도움이 되길 바랍니다.

 

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