본문 바로가기

Java

자바 n진수 변환

자주 사용하는 2진수, 8진수, 16진수의 경우엔 Integer 클래스의 메소드를 사용하여 변환한다.

  • 2진수 변환 -> Integer.toBinaryString(int num) -> String
  • 8진수 변환 -> Integer.toOctalString(int num) ->String
  • 16진수 변환 -> Integer.toHexString(int num) -> String

파라미터에 int형 변수를 넣으면 n진수로 변환된 String형 변수를 반환 한다.

그외 n진수는 n으로 나눈 나머지를 통해 구한다.

10진수인 13를 2진수로 변환하기 위해서는 10진수 k를 바꾸고 싶은 n진수로 나누고 나머지값을 아래서부터 위로 적으면 n진수로 변환된 값이다.

13 / 2 = 6 / 13 % 2 = 1
6 / 2 = 3 / 6 % 2 = 0
3 / 2 = 1 / 3 % 2 = 1
1 / 2 = 0 / 1 % 2 = 1

13의 2진수는 1101이다.

다른 n진수들도 마찬가지 방법으로 구하면 된다.

이를 java 코드로 표현하면 다음과 같을 것이다.

public String solution(int n, int value) {
    StringBuilder builder = new StringBuilder();
    while (value >= 1) {
        builder.insert(0, value % n);
        value /= n;
    }
    return builder.toString();
}

백준 알고리즘 문제를 통해 n진수를 직접 변환해보자.