본문 바로가기

Algorithm/정리

진수 변환 (10진수 > n진수 / n진수 > 10진수)

1. 10진수 -> n진수 변환

Integer.toString(int n, int radix)

10진수로 입력된 n을 radix진수 형태로 변환한다.

public class Solution {
    public static void main(String[] args) {
        int a = 25;

        System.out.println("10진수 -> 2진수");
        System.out.println(Integer.toBinaryString(a));
        System.out.println(Integer.toString(a,2));

        System.out.println("10진수 -> 3진수");
        System.out.println(Integer.toString(a,3));

        System.out.println("10진수 -> 4진수");
        System.out.println(Integer.toString(a,4));

        System.out.println("10진수 -> 5진수");
        System.out.println(Integer.toString(a,5));

        System.out.println("10진수 -> 6진수");
        System.out.println(Integer.toString(a,6));

        System.out.println("10진수 -> 7진수");
        System.out.println(Integer.toString(a,7));

        System.out.println("10진수 -> 8진수");
        System.out.println(Integer.toOctalString(a));
        System.out.println(Integer.toString(a,8));

        System.out.println("10진수 -> 16진수");
        System.out.println(Integer.toString(a,16));
        System.out.println(Integer.toHexString(a));
    }
}

2진수는 toBinaryString(), 8진수는 toOctalString(), 16진수는 toHexString()을 사용해서 진수 변환을 할 수 있지만, 다른 진수 변환들과 같이 toString()으로도 사용이 가능하므로 코테에서 기억이 나지 않는다면 toString을 사용하면 될 것 같다.

 

!!중요!!

10진수만 int형이고 나머지 진수는 String형 >> int는 전부 10진수로 인식

물론 toString(int n, int radix)로 사용해도 무관하다.

 

1. n진수 -> 10진수 변환

Integer.parseInt(String n, int radix)

radix진수 형태로 입력된 n을 10진수로 변환한다.

public class Solution {
    public static void main(String[] args) {
        String a = "110011";

        System.out.println("2진수 -> 10진수");
        System.out.println(Integer.parseInt(a,2));

        System.out.println("3진수 -> 10진수");
        System.out.println(Integer.parseInt(a,3));

        System.out.println("4진수 -> 10진수");
        System.out.println(Integer.parseInt(a,4));

        System.out.println("5진수 -> 10진수");
        System.out.println(Integer.parseInt(a,5));

        System.out.println("6진수 -> 10진수");
        System.out.println(Integer.parseInt(a,6));

        System.out.println("7진수 -> 10진수");
        System.out.println(Integer.parseInt(a,7));

        System.out.println("8진수 -> 10진수");
        System.out.println(Integer.parseInt(a,8));

        System.out.println("16진수 -> 10진수");;
        System.out.println(Integer.parseInt(a,16));
    }
}

 

 

!!중요!!

String타입으로 받은 n진수 값을 Integer.parseInt(string s, int radix) 함수에서 's'변수에 넣고 넣은 값이 몇 진수 값 인지 'radix'에 넣어야 한다.