+ Cách chuyển một số hệ cơ số 10 sang 1 hệ cơ số khác bất kì, ở đây mình gọi là cơ số C;
s = ""; // số cần tìm dưới dạng chuỗi
n; // số cần chuyển
while (n > 0)
{
t = n % C; // lưu t dưới dạng kí tự
s = t + s; // tức chèn kí tự mới vào đầu chuỗi
n = n / C;
}
+ Cách chuyển 1 số từ hệ cơ số C bất kì sang hệ cơ số 10:
s; // số cần chuyển dưới dạng chuỗi. Vd: "10100" hoặc "A5"
n = 0; // số cần tìm trên hệ cơ số 10
len = length(s) - 1;
for i = 0 -> len do:
n += (int)s[i] * C^(len - i);
// Vd: s = "A5" tức s[0] = 'A' và s[1] = '5' => n = 10 * 16^(1) + 5 * 16^(0); A trong hệ hex = 10
// vì trong bộ nhớ đếm số thứ tự từ trước ra sau, còn trong logic hệ cơ số thì mình đếm từ sau ra trước nên mới dùng (len - i)
end for;
Với bài toán chuyển giữa 2 cơ số bất kì không phải hệ 10 thì bạn có thể dùng hệ 10 làm hệ trung gian, tức chuyển 2 lần. Vd chuyển giữa hệ 2 và hệ 16 thì mình làm 2 -> 10 > 16.
Search google để biết thêm chi tiết. Chúc bạn thành công.