728x90
오늘 다뤄볼 내용은 10진법을 n진수 값으로 변환하기, 그리고 n진수 값을 10진법 값으로 되돌리는 방법이다.코딩테스트에서 나왔던 내용이니 숙지하면 좋을 것 같다.
1. 10진법 N진수 변환
우선 10진법 int 값을 n진수 값으로 전화하는 방법을 알아보자.
public static String conversion(int number, int N){
StringBuilder sb = new StringBuilder();
int current = number;
while(current > 0){
if(current % N < 10){
sb.append(current % N);
} else {
sb.append((char)(current % N - 10 + 'A'));
}
current /= N;
}
return sb.reverse().toString();
}
1. number 값은 int 숫자 값을 입력해주면 된다
2. n값은 n진수 원하는 진수를 입력해주면 된다
또 다른 방법을 소개하자면 Java Util에 있는 Integer의 함수를 활용해 n진수로 값을 구할 수 있다. 방법은 다음과 같다.
//10진법 -> 2진법
String decimalNumber2 = Integer.toString(number, 2);
String decimalToBinary2 = Integer.toBinaryString(number);
//10진법 -> 3진법
String decimalNumber3 = Integer.toString(number, 3);
//10진법 -> 4진법
String decimalNumber4 = Integer.toString(number, 4);
//10진법 -> 5진법
String decimalNumber5 = Integer.toString(number, 5);
//10진법 -> 6진법
String decimalNumber6 = Integer.toString(number, 6);
//10진법 -> 7진법
String decimalNumber7 = Integer.toString(number, 7);
//10진법 -> 8진법
String decimalNumber8 = Integer.toString(number, 8);
String decimalToOctal2 = Integer.toOctalString(number);
//10진법 -> 9진법
String decimalNumber9 = Integer.toString(number, 9);
//10진법 -> 16진법
String decimalNumber16 = Integer.toString(number, 16);
String decimalToHex2 = Integer.toHexString(number);
2. N진수 10진법 변환
위와 동일한 방법으로 number 및 n 값을 현재 진법에서 10진법으로 변화 시켜주면 된다. 메소드는 다음과 같다
public int converse_ten(String number, int N) {
char[] nums = number.toCharArray();
int ans = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] >= 'A') {
ans = ans * N + (nums[i] - 'A' + 10);
} else {
ans = ans * N + (nums[i] - '0');
}
}
return ans;
}
추가적으로 N진수에서 10진법으로 변환하기 위해 Java Util을 활용할 수 있다.
//2진법 -> 10진법
int NumberDecimal2 = Integer.parseInt(n, 2);
//3진법 -> 10진법
int NumberDecimal3 = Integer.parseInt(n, 3);
//4진법 -> 10진법
int NumberDecimal4 = Integer.parseInt(n, 4);
//5진법 -> 10진법
int NumberDecimal5 = Integer.parseInt(n, 5);
//6진법 -> 10진법
int NumberDecimal6 = Integer.parseInt(n, 6);
//7진법 -> 10진법
int NumberDecimal7 = Integer.parseInt(n, 7);
//8진법 -> 10진법
int NumberDecimal8 = Integer.parseInt(n, 8);
//9진법 -> 10진법
int NumberDecimal9 = Integer.parseInt(n, 9);
//16진법 -> 10진법
int NumberDecimal16 = Integer.parseInt(n, 16);
728x90
반응형
'👨💻 프로그래밍 > Java' 카테고리의 다른 글
[Java] JSP/Java Timeout 설정 (N초 후 프로세스 실행) (1) | 2024.02.06 |
---|---|
[Java] Java 현재 날짜 및 시간 값 가져오기 (Date Class) (1) | 2024.02.06 |
[Java] 숫자 각 자릿수 더하기 (0) | 2024.02.03 |
[Dynamic Web Project] 웹 프로젝트 설정 (0) | 2023.07.04 |
[Java] Eclipse Dynamic Web Project 만들기 (0) | 2023.06.29 |