Máy tính chuyển đổi cơ số là gì?
Chuyển đổi cơ số là thay đổi cách biểu diễn một số trong hệ đếm, không thay đổi giá trị của số đó. Chẳng hạn, số nguyên được viết là 15 trong hệ thập phân có thể viết là F trong hệ thập lục phân. Hai cách viết khác nhau nhưng vẫn chỉ cùng một giá trị. Máy tính chuyển đổi cơ số giúp tạo các biểu diễn tương ứng mà không cần thực hiện toàn bộ phép tính thủ công.
Công cụ có hai phạm vi sử dụng. Phần chính gồm bốn ô dành cho thập phân, nhị phân, bát phân và thập lục phân. Khi nội dung một ô thay đổi, ba ô còn lại được cập nhật theo cùng giá trị. Phần tùy chỉnh nhận một chuỗi số, cơ số nguồn và cơ số đích trong khoảng từ 2 đến 36, rồi hiển thị kết quả khi có yêu cầu chuyển đổi.
Dữ liệu phù hợp là số nguyên không âm. Đây không phải công cụ chuyển văn bản thành mã nhị phân, giải mã thông tin hoặc chuyển đổi số có phần lẻ. Kết quả trả về là chuỗi chữ số ở hệ đếm tương ứng, không kèm đơn vị đo.
Muốn đọc kết quả đúng, cần biết cơ số của đầu vào. Cùng chuỗi 10 có thể mang những giá trị khác nhau trong các hệ đếm; chỉ nhìn các ký tự mà bỏ qua cơ số sẽ không đủ để xác định số đang được biểu diễn.

Các thuật ngữ cần hiểu khi chuyển đổi cơ số
Cơ số
Cơ số là số lượng giá trị chữ số được dùng trong một hệ đếm vị trí. Với cơ số b, mỗi chữ số có giá trị từ 0 đến b − 1. Vì vậy, hệ nhị phân chỉ có 0 và 1, còn hệ bát phân không có chữ số 8. Cơ số quyết định cả ký tự hợp lệ lẫn cách tính giá trị. Đừng nhầm cơ số với độ dài chuỗi: một số viết bằng nhiều chữ số vẫn có thể thuộc cơ số 2.
Hệ đếm vị trí
Hệ đếm vị trí là cách viết số mà giá trị của mỗi chữ số phụ thuộc vào vị trí của nó. Các vị trí từ phải sang trái lần lượt có trọng số 1, b, b² và tiếp tục tăng theo lũy thừa của cơ số. Ví dụ, chuỗi 10 có giá trị thập phân là 2 nếu thuộc hệ nhị phân, nhưng là 8 nếu thuộc hệ bát phân. Đây là khác biệt về cách đọc, không phải phép chuyển đổi tự làm thay đổi giá trị ban đầu.
Bit
Bit là một chữ số nhị phân, nhận giá trị 0 hoặc 1. Khi đọc kết quả cơ số 2, mỗi ký tự tương ứng một bit trong biểu diễn đó. Tuy nhiên, độ dài chuỗi hiển thị không đồng nghĩa với việc công cụ đã chọn kiểu số 8, 16 hay 32 bit. Mã nguồn không có lựa chọn độ rộng cố định. Vì vậy, một kết quả ngắn không được tự thêm các số 0 bên trái để đủ một byte.
Chữ số thập lục phân
Chữ số thập lục phân là một ký tự thuộc 0–9 hoặc A–F, trong đó A đến F lần lượt biểu diễn giá trị 10 đến 15. Theo kiến thức nền về hệ đếm, một chữ số hex có thể biểu diễn bằng bốn bit. Quan hệ này giúp đối chiếu hex với nhị phân, nhưng công cụ không tự giữ mọi nhóm đủ bốn bit. Chữ F là một chữ số mang giá trị 15, không phải tên biến hay ký hiệu đơn vị.
BigInt
BigInt là kiểu dữ liệu JavaScript dành cho số nguyên lớn, tránh giới hạn chính xác số nguyên của kiểu Number thông thường. Công cụ dùng kiểu này để tích lũy giá trị từ chuỗi đầu vào và tạo kết quả ở cơ số khác. Điều đó hữu ích khi số có nhiều chữ số, nhưng không đồng nghĩa hỗ trợ phần lẻ hoặc dữ liệu dài vô hạn. Bộ nhớ, thời gian xử lý và khả năng của trình duyệt vẫn tạo ra giới hạn thực tế.

Đầu vào hợp lệ và cách đọc kết quả chuyển đổi
Chữ số nào hợp lệ trong từng hệ?
Bốn ô chính có tập ký tự riêng. Nhập đúng ô giúp công cụ biết phải đọc chuỗi theo hệ nào; công cụ không tự đoán cơ số dựa trên hình thức của số.
| Hệ đếm | Cơ số | Ký tự hợp lệ |
|---|---|---|
| Nhị phân | 2 | 0 và 1 |
| Bát phân | 8 | 0 đến 7 |
| Thập phân | 10 | 0 đến 9 |
| Thập lục phân | 16 | 0 đến 9, A đến F hoặc a đến f |
Ở phần tùy chỉnh, cơ số nguồn và đích nên là số nguyên từ 2 đến 36. Các ký tự được quy ước theo thứ tự 0–9 rồi A–Z: A bằng 10, B bằng 11, đến Z bằng 35. Mỗi chữ số phải có giá trị nhỏ hơn cơ số nguồn. Chẳng hạn, A hợp lệ trong cơ số 11 nhưng chưa hợp lệ trong cơ số 10.
Có thể nhập tiền tố đúng hệ (0b cho nhị phân, 0o cho bát phân, 0x hoặc # cho thập lục phân) và dùng khoảng trắng hoặc gạch dưới làm dấu tách giữa các chữ số; công cụ sẽ bỏ các phần đó trước khi tính. Không nhập ký hiệu đơn vị hay dấu phân cách hàng nghìn khác, vì chúng không thuộc tập chữ số của hệ đang nhập và sẽ bị báo lỗi.
Kết quả hiển thị có ý nghĩa gì?
Kết quả là biểu diễn của cùng số nguyên ở cơ số đích, không có đơn vị đo và không thêm tiền tố. Ô nguồn giữ nguyên các chữ số đã nhập, kể cả số 0 đầu chuỗi và chữ hex viết thường; chỉ khoảng trắng, gạch dưới và tiền tố đúng hệ bị bỏ đi trước khi tính. Các ô được sinh lại dùng biểu diễn chuẩn hóa; kết quả hex và kết quả tùy chỉnh dùng chữ hoa. Bên dưới bốn ô, bản mới còn hiện độ dài bit, số byte và dạng nhị phân nhóm theo 4 bit; mục “Cách tính” mở ra khai triển theo vị trí của số đang nhập khi số không quá 12 chữ số.
Ví dụ, đầu vào có các số 0 ở bên trái không làm tăng giá trị toán học, nên những số 0 đó không được giữ trong kết quả sinh ra. Với giá trị bằng không, đầu ra là 0. Công cụ có chức năng sao chép nội dung hiển thị để dùng ở nơi khác; khi dán, vẫn nên kiểm tra chuỗi và cơ số mà nơi nhận yêu cầu.

Công cụ tính và xử lý chuỗi số như thế nào?
Giá trị của chữ số phụ thuộc vị trí
Quy tắc nền tảng là cộng giá trị của từng chữ số sau khi nhân với trọng số vị trí. Nếu cơ số là b, công thức có dạng N = dₖ × bᵏ + … + d₁ × b + d₀, với mọi chữ số dᵢ thỏa mãn 0 ≤ dᵢ < b. Chữ số ngoài cùng bên phải có trọng số 1, chữ số kế tiếp có trọng số b.
Mã nguồn đọc chuỗi từ trái sang phải theo một cách tương đương: bắt đầu từ 0, nhân giá trị đang có với cơ số nguồn rồi cộng giá trị chữ số tiếp theo. Lặp lại đến hết chuỗi sẽ thu được một số nguyên chung. Công cụ sau đó dùng khả năng biểu diễn theo cơ số của BigInt để tạo chuỗi ở hệ đích.
Việc tích lũy được thực hiện bằng số nguyên BigInt, không chuyển toàn bộ đầu vào qua số dấu phẩy động thông thường. Không có bước làm tròn phần lẻ, bởi thuật toán này chỉ đọc các chữ số của số nguyên không âm.
Cách xử lý dữ liệu không hợp lệ
Bốn ô chính và phần tùy chỉnh đều từ chối ký tự sai và báo rõ ký tự đó. Chẳng hạn, nhập 2 vào ô nhị phân sẽ hiện lỗi nêu rõ ký tự “2” chỉ dùng 0–1, đồng thời ba ô còn lại bị xóa để không còn kết quả cũ. Ký tự sai vẫn nằm trong ô nguồn để bạn sửa, không bị xóa lặng lẽ. Nếu xóa hết một ô, ba ô còn lại cũng được xóa.
Phần tùy chỉnh xử lý tương tự: khoảng trắng và gạch dưới giữa các chữ số được ghép bỏ, tiền tố đúng cơ số nguồn (0b, 0o, 0x hoặc #) được nhận, còn ký tự không phù hợp với cơ số nguồn khiến phép chuyển đổi bị từ chối và vùng kết quả bị ẩn. Một chuỗi có khoảng trắng không được hiểu là nhiều số độc lập.
Kết quả tùy chỉnh cập nhật ngay khi sửa số hoặc cơ số, không cần bấm nút chuyển đổi; nút ↔ chỉ đổi chiều hai cơ số cho nhau. Các trường cơ số phải là số nguyên từ 2 đến 36: nhập rỗng, chữ hoặc ngoài khoảng sẽ hiện lỗi và ẩn vùng kết quả, thay vì giữ kết quả trước đó.

Ví dụ chuyển đổi cơ số và cách đối chiếu kết quả
Đổi giữa các hệ thông dụng
Các ví dụ dưới đây giả định dữ liệu là số nguyên không âm, không có đơn vị đo. Kết quả được tính theo quy tắc của công cụ và phép tính hệ đếm.
Với đầu vào 255 ở cơ số 10, ba biểu diễn tương ứng là:
| Cơ số đích | Kết quả | Cách đối chiếu |
|---|---|---|
| 2 | 11111111 | 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255 |
| 16 | FF | 15 × 16 + 15 = 255 |
| 8 | 377 | 3 × 64 + 7 × 8 + 7 = 255 |
Nếu nhập 17 ở ô bát phân, giá trị được đọc là 1 × 8 + 7 = 15 trong hệ thập phân. Kết quả nhị phân là 1111, còn hex là F. Điểm quan trọng là chuỗi 17 ở đây thuộc cơ số 8, không phải số 17 thập phân.
Đổi cơ số tùy chỉnh
Giả sử chuyển chuỗi 123 từ cơ số 5 sang cơ số 2. Cả ba chữ số đều nhỏ hơn 5, nên đầu vào hợp lệ. Giá trị trung gian là 1 × 5² + 2 × 5 + 3 = 38. Vì 38 = 32 + 4 + 2, kết quả nhị phân là 100110.
Với chữ Z ở cơ số 36, giá trị là 35, nên chuyển sang cơ số 10 nhận được 35. Nhập z viết thường cũng mang cùng giá trị. Ví dụ này cho thấy tập chữ cái của phần tùy chỉnh rộng hơn hex: Z hợp lệ ở cơ số 36 nhưng không hợp lệ ở cơ số 16.
Số lớn và đầu vào dễ gây nhầm
Số thập phân 9007199254740993 bằng 2⁵³ + 1. Biểu diễn hex tương ứng là 20000000000001, vì giá trị cũng bằng 2 × 16¹³ + 1. Cách tích lũy bằng BigInt giữ được số nguyên này; ví dụ không phải cam kết về tốc độ với chuỗi dài tùy ý.
Ngược lại, nhập 10,5 vào ô thập phân không được hiểu là số có phần lẻ. Dấu phẩy không thuộc hệ thập phân nên công cụ báo lỗi nêu ký tự “,” và xóa ba ô còn lại, thay vì tự bỏ dấu phẩy để tính 105. Vì vậy, không có kết quả nào cho 10,5; hãy nhập số nguyên không dấu phẩy.
Nếu nhập 102 trong phần tùy chỉnh với cơ số nguồn 2, chữ số 2 không hợp lệ. Công cụ thông báo lỗi và ẩn vùng kết quả, thay vì tự bỏ chữ số ấy để tính tiếp. Hai tình huống này cho thấy cả hai phần đều từ chối đầu vào không hợp lệ thay vì tự sửa lặng lẽ.

Khi nào nên dùng công cụ chuyển đổi hệ cơ số?
Học tập và kiểm tra phép tính
Công cụ phù hợp để đối chiếu bài tập hệ đếm sau khi tự tính bằng trọng số vị trí hoặc chia lấy dư. Khi kết quả khác nhau, nên kiểm tra cơ số nguồn và tính hợp lệ của từng chữ số trước. Việc đối chiếu có ích hơn nếu bạn hiểu tại sao mỗi vị trí mang một trọng số, thay vì chỉ ghi lại chuỗi kết quả.
Trong quá trình học lập trình, bạn có thể dùng công cụ để quan sát một giá trị nguyên dưới nhiều dạng biểu diễn. Điều này giúp phân biệt giá trị với cách viết của nó. Tuy nhiên, đổi một số sang nhị phân không đồng nghĩa chuyển văn bản thành dữ liệu nhị phân hoặc chuyển đổi nội dung một tệp.
Đọc các ký hiệu số trong tài liệu kỹ thuật
Khi tài liệu ghi một giá trị nguyên bằng hex, công cụ có thể giúp đọc giá trị đó ở hệ thập phân. Phạm vi này chỉ là đổi số; công cụ không phân tích bộ nhớ, cấu trúc dữ liệu hay ý nghĩa của một địa chỉ kỹ thuật.
Tương tự, số bát phân thường xuất hiện khi học quyền truy cập Unix. Có thể dùng phép chuyển đổi để tham khảo giá trị số, nhưng công cụ không diễn giải quyền đọc, ghi hoặc thực thi. Với mã màu, chỉ nên chuyển giá trị số hoặc thành phần màu đã được tách phù hợp. Công cụ không phải trình chuyển đổi màu và không tự nhận biết cấu trúc của một mã màu hoàn chỉnh.

Chuyển đổi hệ đếm khác gì đổi cơ số logarit và mã hóa?
Chuyển đổi hệ đếm và đổi cơ số logarit
Chuyển đổi hệ đếm giữ nguyên giá trị số và thay cách viết. Đổi cơ số logarit là một phép biến đổi toán học khác, dùng công thức nền log_b(a) = log_c(a) / log_c(b). Trong phạm vi số thực, công thức cần các điều kiện như a > 0 và các cơ số dương, khác 1. Công cụ này không triển khai tính logarit.
Để kiểm tra chuyển đổi hệ đếm thủ công, bạn có thể dùng tổng trọng số khi đọc số, hoặc chia liên tiếp cho cơ số đích và đọc các số dư theo thứ tự ngược lại. Các cách này hữu ích với ví dụ nhỏ và giúp phát hiện việc chọn nhầm hệ nguồn.
Biểu diễn số và xử lý dữ liệu mã hóa
Một chuỗi chỉ gồm ký tự hex chưa chắc là một số nguyên cần chuyển đổi. Nó có thể biểu diễn các byte, một giá trị băm hoặc dữ liệu đã mã hóa. Encode là đổi cách biểu diễn dữ liệu; hash tạo giá trị băm; encrypt biến đổi dữ liệu bằng cơ chế mật mã có khóa. Những việc đó không tương đương với đổi hệ đếm.
Công cụ không cung cấp cơ chế giải mã văn bản, đảo ngược hàm băm hoặc giải mã dữ liệu mã hóa. Trước khi chuyển một chuỗi kỹ thuật, cần biết nó được định nghĩa là số nguyên hay một cấu trúc dữ liệu khác. Hình thức ký tự giống nhau không bảo đảm ý nghĩa giống nhau.

Giới hạn và những điểm cần kiểm tra trước khi dùng kết quả
Các dạng số chưa được hỗ trợ
Công cụ không hỗ trợ đúng giá trị ban đầu của số âm hoặc số có phần lẻ. Trong bốn ô chính, dấu âm, dấu chấm và dấu phẩy đều là ký tự không hợp lệ: công cụ báo lỗi nêu rõ ký tự đó và xóa các ô còn lại, thay vì tính phần còn lại. Vì vậy, không có kết quả nào xuất hiện cho đầu vào đó, và không nên dùng công cụ để thay cho phép chuyển đổi số âm hoặc phần lẻ.
Không có lựa chọn biểu diễn bù hai, độ rộng bit cố định hoặc tự giữ số 0 đầu chuỗi. Nếu bài tập yêu cầu kiểu số có dấu hay một số lượng bit cụ thể, kết quả chuyển đổi giá trị nguyên chưa đủ để đáp ứng toàn bộ yêu cầu định dạng đó.
Giới hạn môi trường
BigInt hỗ trợ số nguyên lớn nhưng không bảo đảm xử lý chuỗi dài vô hạn. Chưa có dữ liệu kiểm thử về số chữ số tối đa hoặc hiệu năng trên từng trình duyệt, nên không thể đưa ra giới hạn ổn định cụ thể.
Với phần tùy chỉnh, kết quả cập nhật ngay sau mỗi lần sửa đầu vào. Nếu dữ liệu mới rỗng, không hợp lệ hoặc cơ số ngoài khoảng 2–36, vùng kết quả sẽ bị ẩn đi chứ không giữ kết quả trước đó. Vì vậy, chuỗi đang hiện luôn tương ứng với dữ liệu đang nhập.
Sao chép cũng phụ thuộc môi trường trình duyệt; thông báo thành công không đủ chứng minh nội dung mong muốn đã vào bộ nhớ đệm. Hãy đối chiếu nơi dán với chuỗi hiển thị. Ngoài ra, mã chuyển đổi chưa đủ để khẳng định toàn trang không gửi, không lưu hay không thu thập dữ liệu.

Câu hỏi thường gặp
Có thể chuyển đổi số âm hoặc số có dấu phẩy không?
Không, công cụ chỉ chuyển đổi số nguyên không âm theo đúng giá trị. Cả bốn ô chính và phần tùy chỉnh đều từ chối chuỗi có dấu âm hoặc dấu phẩy: công cụ báo lỗi nêu rõ ký tự không hợp lệ và không hiện kết quả, thay vì loại bỏ ký tự đó rồi tính phần còn lại. Không nên dùng kết quả để thay cho phép chuyển đổi số âm hoặc phần lẻ.
Vì sao ký tự vừa nhập bị mất khỏi ô số?
Không còn như vậy ở bản mới: ký tự không thuộc tập chữ số của hệ đang nhập sẽ ở nguyên trong ô nguồn và công cụ báo lỗi nêu rõ ký tự đó cùng tập chữ số hợp lệ, đồng thời xóa các ô còn lại để không còn kết quả cũ. Chỉ khoảng trắng, gạch dưới (dấu tách giữa các chữ số) và tiền tố đúng hệ bị bỏ đi khi nhập. Nếu thấy một ký tự “biến mất”, đó là dấu tách hoặc tiền tố đã được công cụ hiểu và bỏ trước khi tính, không phải chữ số bị lọc lặng lẽ.
Có cần nhập tiền tố 0x hoặc 0b không?
Không bắt buộc, nhưng bản mới đã nhận tiền tố đúng hệ: 0b cho nhị phân, 0o cho bát phân, 0x hoặc # cho thập lục phân, kể cả trong phần tùy chỉnh khi cơ số nguồn tương ứng. Tiền tố sẽ được bỏ đi trước khi tính vì hệ đã xác định bằng ô nhập hoặc trường cơ số nguồn. Tiền tố sai hệ (ví dụ 0x trong ô thập phân) vẫn là ký tự không hợp lệ và sẽ bị báo lỗi.
Chữ hex viết thường có làm thay đổi kết quả không?
Không, chữ a đến f được đọc cùng giá trị với A đến F. Khi tính, công cụ không phân biệt chữ hoa và chữ thường trong các chữ cái hợp lệ. Ô hex đang nhập có thể giữ chữ thường, nhưng kết quả hex được sinh từ ô khác dùng chữ hoa; kết quả tùy chỉnh cũng dùng chữ hoa. Đây chỉ là khác biệt trình bày. Tuy nhiên, một chữ cái vẫn phải phù hợp với cơ số nguồn, không phải chữ nào cũng hợp lệ trong hệ hex.
Vì sao kết quả không giữ số 0 ở đầu hoặc đủ 8 bit?
Vì công cụ tạo biểu diễn theo giá trị số nguyên, không theo độ dài chuỗi ban đầu. Các số 0 bên trái không thay đổi giá trị nên bị lược bỏ trong đầu ra được sinh lại. Mã nguồn cũng không có tùy chọn đệm đủ 8 bit hay độ rộng khác. Nếu một tài liệu yêu cầu độ rộng cố định, đó là yêu cầu định dạng bổ sung. Riêng ô nguồn có thể còn số 0 đầu chuỗi vì nó giữ cách viết sau bước lọc.
Công cụ có xử lý được số lớn hơn giới hạn chính xác của Number không?
Có, Logic của công cụ dùng BigInt để đọc và chuyển đổi số nguyên, nên không phụ thuộc giới hạn chính xác số nguyên của Number theo cách nhập toàn bộ số vào kiểu đó. Tuy nhiên, khả năng này không phải cam kết về mọi độ dài đầu vào hoặc mọi thiết bị. Chuỗi rất dài vẫn cần bộ nhớ và thời gian xử lý. Chưa có kiểm thử xác định ngưỡng tối đa, nên cần phân biệt độ chính xác toán học của phép tính với khả năng đáp ứng thực tế.
Vì sao kết quả tùy chỉnh vẫn là kết quả cũ sau khi tôi sửa dữ liệu?
Không còn như vậy ở bản mới: phần tùy chỉnh tính trực tiếp như bốn ô chính, sửa số hoặc cơ số là kết quả cập nhật ngay, không cần bấm nút chuyển đổi lại. Nếu dữ liệu mới rỗng, không hợp lệ hoặc cơ số ngoài khoảng 2–36, vùng kết quả sẽ bị ẩn đi thay vì giữ kết quả trước đó. Hãy kiểm tra thông báo lỗi đi kèm khi kết quả biến mất, thay vì coi mọi chuỗi đang hiện là kết quả mới.
