본문 바로가기
프로그래밍 기초/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() 메소드를 사용하여 간단하게 변환하는 방식입니다. 두 가지 방법 모두 이해하시는데 도움이 되길 바랍니다.

 

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