Computer Science/Algorithm
[기본 알고리즘/자료구조] 기수 변환하기 (N진수로 변환)
simDev1234
2022. 5. 31. 18:02
| 개념
기수란? 수를 나타내는 데 기초가 되는 수.
- 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지음