| 개념
기수란? 수를 나타내는 데 기초가 되는 수.
- 10진법에서는 0~9까지의 정수를 말하며, 2진법에서는 0~1까지 정수를 말한다.
| 기수 변환을 수행하는 프로그램
package _00_두잇;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class _01_기수변환 {
//정수값 x를 r로 변환하여 배열 d에 아랫자리부터 넣어두고 자릿수를 반환한다.
static int convert(int x, int r, char[] d) {
int digits = 0;
String dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//배열 안에 나눈 나머지를 하나씩 넣는다
while (x != 0) {
d[digits++] = dchar.charAt(x % r);
x = x / r;
}
//배열의 역순이 변환한 진수값이다.
for (int i = 0; i < digits/2; i++) {
char tmp = d[i];
d[i] = d[digits-1-i];
d[digits-1-i] = tmp;
}
//변환한 수의 자릿수
return digits;
}
public static void main(String[] args) throws Exception{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//변환하려는 수
int num;
//기수
int jin;
//변환한 수의 자릿수
int digits;
//변환 후 각 자리의 숫자를 넣어주는 문자 배열
char[] cvArr = new char[32];
System.out.print("변환하려는 수 : ");
num = Integer.parseInt(reader.readLine());
System.out.print("자릿수(2~36) : ");
jin = Integer.parseInt(reader.readLine());
digits = convert(num, jin, cvArr);
System.out.print(jin+"진수로 ");
for (int i = 0; i < digits; i++) {
System.out.print(cvArr[i]);
}
System.out.print("입니다.\n");
}
}
>> 결과
변환하려는 수 : 35
자릿수(2~36) : 2
2진수로 100011입니다.
[출처]
[자료구조와 함께 배우는 알고리즘 입문], BohYoh Shibata지음
'Computer Science > Algorithm' 카테고리의 다른 글
[백준 2231] 분해합 (0) | 2022.07.08 |
---|---|
[기본 알고리즘/자료구조] 소수 나열하기 (0) | 2022.06.02 |
[정렬] 정렬 문제 풀이 및 속도 비교 (0) | 2022.05.11 |
[정렬] 병합정렬(Merge Sort) (0) | 2022.05.11 |
[정렬] 퀵 정렬(Quick Sort) (0) | 2022.05.10 |