이진수와 십진수 개념 이해하기
이진수 (Binary): 이진수는 0과 1 두 개의 숫자만 사용하는 수 체계입니다. 각 자릿수는 오른쪽부터 시작해서 2의 제곱을 나타냅니다.
예를 들어 1011이라는 이진수를 생각해보면:
1×2^3+0×2^2+1×2^1+1×2^0이 계산은 다음과 같이 됩니다:
8+0+2+1=11 (십진수)
십진수 (Decimal): 십진수는 우리가 평소에 사용하는 수 체계로, 0부터 9까지의 숫자를 사용합니다. 각 자릿수는 10의 제곱을 나타냅니다.
따라서 이진수를 십진수로 변환하려면 이진수의 각 자릿수에 맞는 2의 제곱 값을 모두 더해주면 됩니다.
자바 프로그램 작성 방법
이진수를 십진수로 변환하는 방법은 크게 두 가지가 있습니다.
직접 변환하기: 각 자릿수를 처리해서 십진수를 계산하는 방법
자바의 내장 함수 사용하기: 자바에서 제공하는 Integer.parseInt() 메서드를 이용하는 방법
각 방법을 하나씩 살펴보겠습니다.
1. 직접 변환하기
이 방법은 for 반복문을 이용하여 이진수의 각 자릿수를 하나씩 확인하고, 각 자리에 맞는 값을 더해주는 방식입니다.
이진수를 십진수로 변환하는 방법 (직접 계산)
이진수를 입력받기: 이진수를 문자열로 입력받아야 각 자릿수에 쉽게 접근할 수 있습니다.
변수 초기화:
decimal: 최종 십진수 결과를 저장할 변수
power: 각 자릿수의 2의 제곱을 나타내는 변수
각 자릿수 계산: 오른쪽 끝에서부터 각 자릿수를 확인하며, 1인 경우 2^power를 십진수 결과에 더해줍니다.
제곱 값 증가: 다음 자릿수로 이동할 때마다 power를 1씩 증가시킵니다.
자바 코드 (직접 계산 방식)
import java.util.Scanner;
public class BinaryToDecimalManual {
public static void main(String[] args) {
// 이진수 입력받기
Scanner scanner = new Scanner(System.in);
System.out.print("이진수를 입력하세요: ");
String binary = scanner.nextLine();
scanner.close();
int decimal = 0; // 최종 십진수 결과를 저장할 변수
int power = 0; // 오른쪽 끝(가장 작은 자리)부터 시작할 제곱
// 오른쪽에서 왼쪽으로 이진수를 하나씩 확인
for (int i = binary.length() - 1; i >= 0; i--) {
char bit = binary.charAt(i); // 현재 자릿수의 값을 가져옴
if (bit == '1') {
// 자릿수가 '1'이면, 2^power 값을 십진수 결과에 더함
decimal += Math.pow(2, power);
}
// 다음 자릿수로 이동하며 제곱값 증가
power++;
}
// 십진수 결과 출력
System.out.println("십진수 값은: " + decimal);
}
}
코드 설명
입력받은 이진수는 문자열로 취급하여 각 자릿수에 접근할 수 있습니다.
오른쪽 끝에서부터 왼쪽으로 이동하며 각 자릿수를 확인합니다.
1을 만나면 2^power 값을 decimal 변수에 더해줍니다.
반복문이 진행될 때마다 power를 1씩 증가시켜 자릿수에 맞는 값을 계산합니다.
2. 자바의 내장 함수 사용하기
자바에서는 Integer.parseInt()라는 메서드를 이용하여 쉽게 이진수를 십진수로 변환할 수 있습니다.
변환 과정
이진수 입력받기: 문자열로 이진수를 입력받습니다.
Integer.parseInt(binary, 2) 사용: 이 메서드는 문자열을 2진수로 해석하여 십진수 값으로 반환해 줍니다.
자바 코드 (내장 함수 방식)
import java.util.Scanner;
public class BinaryToDecimalBuiltIn {
public static void main(String[] args) {
// 이진수 입력받기
Scanner scanner = new Scanner(System.in);
System.out.print("이진수를 입력하세요: ");
String binary = scanner.nextLine();
scanner.close();
// Integer.parseInt로 이진수를 십진수로 변환
int decimal = Integer.parseInt(binary, 2);
// 십진수 결과 출력
System.out.println("십진수 값은: " + decimal);
}
}
코드 설명
Integer.parseInt(binary, 2) 메서드는 첫 번째 인자로 이진수 문자열을 받고, 두 번째 인자에 2를 입력하여 이진수를 나타낸다고 알려줍니다.
자바가 이 문자열을 자동으로 십진수로 변환해 주기 때문에, 변환 과정이 매우 간단합니다.
예제 예시
1011이라는 이진수를 입력해보면 다음과 같이 변환됩니다:
직접 계산:
decimal = 0과 power = 0으로 시작합니다.
오른쪽에서 왼쪽으로 각 자릿수를 확인하며, 1을 만나면 해당 제곱 값을 더합니다.
계산 과정: .
결과: 11.
내장 함수 사용:
Integer.parseInt("1011", 2)를 호출하면 바로 11이라는 십진수를 반환합니다.
직접 변환 방식은 이진수 변환의 원리를 이해하는 데 매우 유용하며 내장 함수 방식은 실제 프로그램에서는 더 간편하고 빠르게 사용할 수 있습니다.
이 두 가지 방식 모두 동일한 결과를 얻을 수 있습니다. 도움이 되셨길 바랍니다. 추가로 궁금한 점이 있으시면 언제든지 질문해 주세요!
'자바(Java)' 카테고리의 다른 글
배열에서 가장 작은 요소와 가장 큰 요소를 찾는 Java 프로그램 (1) | 2024.11.10 |
---|---|
자바에서 큰 수의 팩토리얼을 계산하는 프로그램 (1) | 2024.11.09 |
피보나치 수열을 출력하는 Java 프로그램 (0) | 2024.11.07 |
자바(Java)로 숫자를 뒤집는 프로그램을 작성하는 방법 (1) | 2024.10.15 |
Java에서 주어진 숫자의 팩토리얼을 구하는 프로그램 (0) | 2024.10.14 |