Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #어린 동물 찾기 #코린이 #개발자 #study
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
- 코린이 #개발자 #study
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #아픈 동물 찾기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
Archives
- Today
- Total
luke
[자바/Java] - 진법 변환 (Integer, BigInteger) (n 진수 <-> 10진수) 본문
[자바/Java] - 진법 변환 (Integer, BigInteger) (n 진수 <-> 10진수)
자바 진법 변환에 대해 정리해보려 한다. 알고리즘 문제를 풀면서 생각보다 많이 나와 정리해 두면 좋을 거 같다.
우선 진법 변환 하는데 Integer를 사용해 많이들 한다. 다만 필자는 BigIntegr를 사용하는 경우는 많이 보지 못했는데, 이번에 두 개를 같이 다뤄보려고 한다.
1. 10진수 → n진수
※ 진법 변환할때 10진수를 제외하고 나머지 진수는 String 타입으로 받아야 한다.
int는 전부 10진수로 인식하고 2진수, 8진수, 16진수는 Binary, Octal, Hex 함수가 존재한다.
(toString() 함수를 사용해도 괜찮다. )
<예시>
public class Main {
public static void main(String[] args) {
int num = 35;
System.out.println("10진수 -> 2진수");
System.out.println(Integer.toBinaryString(num));
System.out.println(Integer.toString(num,2));
System.out.println("10진수 -> 3진수");
System.out.println(Integer.toString(num, 3));
System.out.println("10진수 -> 4진수");
System.out.println(Integer.toString(num, 4));
System.out.println("10진수 -> 5진수");
System.out.println(Integer.toString(num, 5));
System.out.println("10진수 -> 6진수");
System.out.println(Integer.toString(num, 6));
System.out.println("10진수 -> 7진수");
System.out.println(Integer.toString(num, 7));
System.out.println("10진수 -> 8진수");
System.out.println(Integer.toOctalString(num));
System.out.println(Integer.toString(num,8));
System.out.println("10진수 -> 16진수");
System.out.println(Integer.toHexString(num));
System.out.println(Integer.toString(num,16));
}
}
<결과>
<BigInteger 예시>
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
String str = "35";
BigInteger big = new BigInteger(str);
System.out.println("10진수 -> 2진수");
System.out.println(big.toString(2));
System.out.println("10진수 -> 3진수");
System.out.println(big.toString( 3));
System.out.println("10진수 -> 4진수");
System.out.println(big.toString( 4));
System.out.println("10진수 -> 5진수");
System.out.println(big.toString( 5));
System.out.println("10진수 -> 6진수");
System.out.println(big.toString( 6));
System.out.println("10진수 -> 7진수");
System.out.println(big.toString( 7));
System.out.println("10진수 -> 8진수");
System.out.println(big.toString(8));
System.out.println("10진수 -> 16진수");
System.out.println(big.toString(16));
}
}
결과는 위 결과와 똑같이 나온다.
다만 다른점은 int형이 아닌 String 문자열로 받아 BigInteger 형변환을 통해 진수를 변환시켜 준다.
또 Integr.toString(num,2) 이런식으로 했다면 BigInteger는 big.toString(2)이다.
2. n진수 → 10진수
※ 10진수로 변환할 때 String타입으로 받은 값은 Integer.parseInt(String s, int radix) 함수에 넣는데 int값 radix 에는 str값이 몇 진수 값 인지 넣어줘야 한다.
<예시>
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
String str = "100011";
System.out.println("2진수 -> 10진수");
System.out.println(Integer.parseInt(str,2));
System.out.println("3진수 -> 10진수");
System.out.println(Integer.parseInt(str,3));
System.out.println("4진수 -> 10진수");
System.out.println(Integer.parseInt(str,4));
System.out.println("5진수 -> 10진수");
System.out.println(Integer.parseInt(str, 5));
System.out.println("6진수 -> 10진수");
System.out.println(Integer.parseInt(str, 6));
System.out.println("7진수 -> 10진수");
System.out.println(Integer.parseInt(str, 7));
System.out.println("8진수 -> 10진수");
System.out.println(Integer.parseInt(str,8));
System.out.println("16진수 -> 10진수");
System.out.println(Integer.parseInt(str,16));
}
}
<결과>
<BigInteger 예시>
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
String str = "100011";
for (int i = 2; i <= 8; i++) {
System.out.println(i+"진수 -> 10진수");
BigInteger big = new BigInteger(str,i);
System.out.println(big);
}
System.out.println("16진수 -> 10진수");
BigInteger big = new BigInteger(str,16);
System.out.println(big);
}
}
n진수를 10진수로 변환할 때는 BigInteger(문자열(), i진수)로 객체를 생성한 뒤 출력해줘야 한다. 위 코드 또한 결과는 같다.
'Study > Java' 카테고리의 다른 글
[자바/Java] - Stack(스택) 정리 및 활용 (0) | 2024.04.29 |
---|---|
[자바/Java] - indexOf(), substring() (문자열 자르기) (0) | 2024.04.21 |
[자바/Java] - compareTo() (문자열, 숫자 비교) (0) | 2024.04.17 |
[자바/Java] - instanceof 연산자 (0) | 2024.01.14 |
[자바/Java] - 다형성(1)(다운캐스팅, 업캐스팅) (0) | 2024.01.14 |