Java/[도서] 자바의 정석

💡 10진수 ↔ 2진수, 8진수, 16진수 변환 방법

Lea Hwang 2022. 4. 20. 22:38

백준 문제를 풀면서 꼭 알고 넘어가야 할 개념이 생겨서 이 글을 포스팅하게 되었습니다.

예제를 통해 이해한 후 이진수 문제로 넘어가서 풀어보는 것도 좋을 것 같습니다.

[백준 3460번] 이진수

 

[백준 3460번] 이진수

https://www.acmicpc.net/problem/3460 3460번: 이진수 양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는..

lealea.tistory.com

 


 

10진수 → 2진수, 8진수, 16진수 변환

java.lang.Integer클래스의 toBinaryString( ), toOctalString( ), toHexString( ) 메서드를 이용하면 변환이 가능합니다.

리턴 타입 클래스 메소드 변환
static String  java.lang.Integer toBinaryString(int i) 10진수 → 2진수
static String java.lang.Integer toOctalString(int i) 10진수 → 8진수
static String java.lang.Integer toHexString(int i) 10진수 → 16진수

 

예제 코드

public class DecimalConversion {

	public static void main(String[] args) {
		int decimal = 100;
		
		String binary = Integer.toBinaryString(decimal);
		String octal = Integer.toOctalString(decimal);
		String hexaDecimal = Integer.toHexString(decimal);
		
		System.out.println("10진수 : " + decimal);
		System.out.println("10진수 → 2진수 : " + binary);
		System.out.println("10진수 → 8진수 : " + octal);
		System.out.println("10진수 → 16진수 : " + hexaDecimal);
	
	}

}

 

출력 결과

10진수 : 100
10진수 → 2진수 : 1100100
10진수 → 8진수 : 144
10진수 → 16진수 : 64

 

 

 

2진수, 8진수, 16진수 → 10진수 변환

java.lang.Integer클래스의 parseInt( ) 메서드를 이용하면 변환이 가능합니다.

리턴 타입 클래스  메소드  
static int java.lang.Integer parseInt(String s) (숫자형의) 문자열을 인자 값으로 받으면 해당 값을 10진수의 Integer형으로 반환
static int java.lang.Integer parseInt(String s, int radix) (숫자형의) 문자열을 첫번째 인자 값으로 받고 변환할 진수값을 두번째 인자값으로 받으면 해당 진수의 Integer형으로 반환

 

예제 코드

public class Conversion {

	public static void main(String[] args) {
		
		int stringToDecimal = Integer.parseInt("100");
		int binaryToDecimal = Integer.parseInt("1001100", 2);
		int octalToDecimal = Integer.parseInt("105", 8);
		int hexaToDecimal = Integer.parseInt("41", 16);
		
		
		System.out.println("10진수 : " + stringToDecimal);
		System.out.println("2진수 → 10진수: " + binaryToDecimal);
		System.out.println("8진수 → 10진수 : " + octalToDecimal);
		System.out.println("16진수 → 10진수 : " + hexaToDecimal);
	
	}

}

 

출력 결과

10진수 : 100
2진수 → 10진수: 76
8진수 → 10진수 : 69
16진수 → 10진수 : 65

 

 

 

참고 블로그 : https://hianna.tistory.com/527