정의
2진수, 8진수, 10진수, 16진수를 서로 변환하기
10진수를 2진수로 변환
정수로 저장
※ 10진수를 n진수로 변환하려면 2 대신에 n을 넣으면 된다
// 10진수를 2진수로 변환하기
int DtoB(int num) { // ex. num = 41
int i = 1, ans = 0;
while(num != 0) {
// 한 자리씩 2의 나머지를 더함
ans += (num % 2) * i;
i *= 10;
num /= 2;
}
return ans;
}
문자열으로 저장
// 10진수를 문자열 2진수로 변환하기
#include <bitset>
#include <string>
string DtoB_str(int num, int i) { // ex. num = 41
string ans;
// i는 비트 자리수, num은 변환할 10진수
ans = bitset<i>(num).to_string();
return ans;
}
2진수를 10진수로 변환
정수로 저장
// 정수형 2진수를 10진수로 변환하기
int BtoD(int num) { // ex. num = 101001
int i = 0, ans = 0;
while(num != 0) {
// 한 자리씩 2^i만큼 더함
ans += (num % 10 << i);
i++;
num /= 10;
}
return num;
}
10진수를 8진수로 변환
출력에서 변환
void DtoOX(int num, int k) { // ex. num = 41
if(k == 8)
cout << oct << num; // 8진수 출력
else if(k == 16)
cout << hex << num; // 16진수 출력
else if(k == 10)
cout << dec << num; // 10진수 출력
}
문자열로 저장
void DtoOX(int num, int k) { // ex. num = 41
char ans[100];
if(k == 8)
sprintf(ans, "%o", num); // n을 8진수로 변환하여 저장
else if(k == 16)
sprintf(ans, "%x", num); // n을 16진수로 변환하여 저장
else if(k == 10)
sprintf(ans, "%d", num); // n을 10진수로 변환하여 저장
int i = 0;
while(ans[i] != '\0')
cout << ans[i++];
}