Sam Story

JAVA - 2~36진수 기수변환 본문

JAVA

JAVA - 2~36진수 기수변환

Sam H 2024. 9. 29. 18:33

오늘 포스팅은

코테를 준비하며 사용했던 것중 유용하게 사용한

2~36진수 변환 관련 내용을 포스팅 해보려 한다.

 

일단 예제부터 확인해보자.

 

 

예제

import java.util.Scanner;
public class CardConv {

    // 입력받은 10진수를 2~36진수로 기수 변환하여 출력하는 메서드
    static int cardConv(int x , int r , char[] d) {

        int digits = 0;

        String dchar = "0123456789ABCDEFGHIJKLMNOPQRXTUVWXYZ";

        do {

            d[digits++] = dchar.charAt(x % r);
            x /= r;

        }while (x != 0);

        for (int i =0; i < digits / 2; i ++) {

            char t = d[i];
            d[i] = d[digits - i - 1];
            d[digits - i - 1] = t;

        }

        return digits;

    }

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        int no;
        int cd;
        int dno;
        int retry;

        char[] cno = new char[32];

        System.out.println("10진수를 기수 변환합니다.");
        do {
        
            do {
            
                System.out.print("변환하는 음이 아닌 정수: ");
                
                no = scan.nextInt();
                
            } while (no < 0);

            do {
            
                System.out.print("어떤 진수로 변환할까요? (2~36): ");
                
                cd = scan.nextInt();
                
            } while (cd < 2 || cd > 36);

            dno = cardConv(no,cd,cno);

            System.out.print(cd + "진수로 ");

            for (int i = 0; i < dno; i ++) {
            
                System.out.print(cno[i]);
                
            }

            System.out.println("입니다");

            System.out.println("한 번 더 할까요? (1...예 / 0...아니요) : ");
            
            retry = scan.nextInt();

        } while (retry == 1);

    }
    
}

 

 

실행결과

 

위 프로그램 처럼 직접 기수 변환하는 메서드를 작성하여

프로그램을 작동 시키는 방법도 있지만

 

정말 간단하게 10진수를 2진수로 바꿔주는 내장 메서드도 있다.

 

 

바로 toBinaryString() 메서드를 사용하면 10진수를 바로 2진수로 바꿔줄 수 있는데

아래 예제코드를 보며 확인해보자.

 

 

예제

import java.util.Scanner;

public class CardConvExample {
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        System.out.println("2진수로 바꿀 숫자를 입력해 주세요.");
        int num = scan.nextInt();

        System.out.println(Integer.toBinaryString(num));

    }
}

 

 

실행결과

 

 

이렇게 toBinaryString() 메서드를 사용하면

2진수의 경우는 별다른 메서드를 작성할 필요없이 바로 구할 수 있다.

 

알아두면 유용하게 사용할 수 있는 메서드라고 생각한다.

 

 

'JAVA' 카테고리의 다른 글

JAVA - 개방 폐쇄 원칙  (0) 2024.10.14
JAVA - 단일 책임의 원칙  (1) 2024.10.12
JAVA - 자료구조 Map  (4) 2024.09.21
JAVA - 스레드 (Thread)  (0) 2024.05.12
JAVA - 랜덤 함수 (Random class)  (0) 2024.05.06