728x90
기수 변환
@24.03.20
하나의 수를 다른 기수(진법)으로 표현하는 기수 변환에 대해서 알아보자.
우리는 보통 10진법을 사용하나, 2진법, 8진법 등 다양한 기수를 사용하기도 한다.
방법 1. 분할과 나머지를 이용
💡
수를 새로운 기수로 나누고, 나머지를 이용하여 새로운 진법의 수를 구성하는 과정을 반복
- 원래의 수를 새 기수로 나눈다.
- 나눈 결과의 나머지를 기록한다.
- 몫이 0이 될 때까지 1과 2의 과정을 반복한다.
- 기록한 나머지를 역순으로 배열한다. ← 새로운 진법의 수
- ex) 10 : 10/2 = 5(0) → 5/2 = 2(1) → 2/2 = 1(0) → 1/2 = 0(1) ⇒ 0101을 역순으로하면 1010
void convertToRadix(int number, int radix, char[] d) {
int count = 0; // 변환 후의 자릿수
String digitChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
do {
d[count++] = digitChars.charAt(number % radix); // radix로 나눈 나머지를 저장
number /= radix; //몫저장
} while (number != 0);
// 역순정렬
for (int i = 0; i < digits / 2; i++) {
char temp = d[i];
d[i] = d[count- i - 1];
d[count- i - 1] = temp;
}
방법 2. 대응 표를 사용
💡
주로 10진수 ↔ 16진수 변환 시 사용하며, 10진수 값에 대응하는 16진수 값을 표로 만들어 변환한다.
728x90