Skip to main content Link Menu Expand (external link) Document Search Copy Copied

10진수를 2진수, 8진수, 16진수로 변환하기

Table of contents

  1. 10진수를 8진수, 16진수로 변환하여 출력
  2. toBinaryString
  3. 예제

10진수를 8진수, 16진수로 변환하여 출력


10진수의 수를 8진수, 16진수로 출력하는 방법은 매우 간단하다.

8진수와 16진수로 출력할 수 있는 printf 지시자가 있어서 이를 이용하면 된다.

8진수의 경우 %o , 16진수의 경우 %x를 사용하면 출력할 수 있다.

하지만, 2진수의 경우 위와같은 지시자가 없다.

물론, 조건문, 반복문을 사용하여 10진수를 2진수로 변환하는 메서드를 작성할 수 있지만, 편한 방법이 있다.


toBinaryString


10진수의 수가 int형이라고 가정할때,

Integer.toBinaryString(Input); 을 사용하면 된다.

만약, 변환하고 싶은 수의 타입이 double 이라면

Double.toBinaryString(Input); 을 사용하면 된다.

2진수의 문자열로 변환해주는 toBinaryString 메서드와 같이, 8진수, 16진수의 문자열로 변환해주는 메서드도 존재한다.

Integer.toHexString(Input);Integer.toOctalString(Input); 을 사용하면 된다.


예제


31이라는 10진수의 수가 있을 때, 2진수, 8진수, 16진수로 변환을 해보겠다.

public class Main {
    public static void main(String[] args) {
        int Num = 31;
        String changeBinary = Integer.toBinaryString(Num);
        String changeOctal = Integer.toOctalString(Num);
        String changeHex = Integer.toHexString(Num);

        System.out.printf("int (10진수) : %d\n",Num);
        System.out.println("=======================");

        System.out.printf("int (8진수) : %o\n",Num);
        System.out.printf("int (16진수) : %x\n",Num);

        System.out.println();

        System.out.println("String (8진수) : " + changeOctal);
        System.out.println("String (16진수) : " + changeHex);
        System.out.println("String (2진수) : " + changeBinary);
    }
}

실행하면, 아래와 같은 결과가 나온다.

image-20221018171543163

8진수, 16진수의 경우 똑같은 결과값이 나왔다.

하지만, printf의 지시자를 활용한 경우 정수의 형식으로 출력되지만, 메서드를 사용한 경우는 문자열이라는 차이가 있다.


정리

  1. 10진수를 8진수, 16진수로 변환하는 방법은, printf의 %o, %x 지시자를 사용하거나 toOctalString(), toHexString() 을 사용한다.

  2. 10진수를 2진수로 변환하는 방법은 printf 지시자가 존재하지 않기 때문에, toBinaryString() 메서드를 사용한다.