Lập trình C - Chuyển đổi hệ cơ số
Chuyển đổi hệ cơ số trong C
Bài toán
1. Chuyển đổi số nguyên N từ hệ cơ số 10 sang hệ cơ số B bất kỳ.
2. Chuyển đổi hệ cơ số B sang hệ cơ số 10 bất kỳ.
Cách chuyển đổi hệ cơ số
- Chuyển đối hệ cơ số 10 sang hệ cơ số B
- Chuyển đối hệ cơ số B sang hệ cơ số 10
Chuyển đối hệ cơ số 10 sang hệ cơ số B
Cách chuyển đổi số nguyên N từ hệ cơ số 10 sang hệ cơ số 2, trong ảnh dưới đây là ví dụ chuyển số 15 và số 6 sang hệ cơ số 2:
- Gán m = 15.
- Put phần dư m chia cho 2 (m % 2) vào stack.
- Gán m = m / 2.
- Nếu m > 0 quay lại bước 2.
- Đảo ngược lại stack ta được số cần tính.
Các hệ số khác chuyển đổi tương tự.
Ví dụ chuyển đối hệ cơ số 10 sang hệ cơ số B
Giả sử hệ cơ số cần chuyển là 2 <= B <= 16. Số đại điện cho hệ cơ số B > 10 là A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.
Chúng ta tạo ra một chương trình như sau để chuyển đổi hệ cơ số trong C:
/**
* Chuong trinh chuyen doi he co so trong C
* Bai tap nay su dung bang ASCII de chuyen doi so nguyen thanh kieu ky tu
* Link tham khao: https://vi.wikipedia.org/wiki/ASCII
*/
#include<stdio.h>
const char CHAR_55 = 55;
const char CHAR_48 = 48;
/**
* chuyen doi so nguyen n sang he co so b
*
* @author viettuts.vn
* @param n: so nguyen
* @param b: he co so
*/
int convertNumber(int n, int b) {
if (n < 0 || b < 2 || b > 16 ) {
printf("He co so hoac gia tri chuyen doi khong hop le!");
return 0;
}
int i;
char arr[20];
int count = 0;
int m;
int remainder = n;
while (remainder > 0) {
if (b > 10) {
m = remainder % b;
if (m >= 10) {
arr[count] = (char) (m + CHAR_55);
count++;
} else {
arr[count] = (char) (m + CHAR_48);
count++;
}
} else {
arr[count] = (char) ((remainder % b) + CHAR_48);
count++;
}
remainder = remainder / b;
}
// hien thi he co so
for (i = count - 1; i >= 0; i--) {
printf("%c", arr[i]);
}
return 1;
}
/**
* Ham main
*/
int main() {
int n = 12;
printf("So %d trong he co so 2 = ", n);
convertNumber(n, 2);
printf("\nSo %d trong he co so 16 = ", n);
convertNumber(n, 16);
return 1;
}
Kết quả:
So 12 trong he co so 2 = 1100
So 12 trong he co so 16 = C
Chuyển đối hệ cơ số B sang hệ cơ số 10
Trong ảnh dưới đây là ví dụ về chuyển đổi hệ cơ số 2 sang hệ cơ số 10.
Các hệ cơ số khác tương tự.