Máy tính chuyển đổi cơ số
Chuyển đổi một số nguyên sang hệ nhị phân, bát phân, thập phân và thập lục phân.
Cách sử dụng máy tính chuyển đổi cơ số này
- Nhập số nguyên
Nhập một số nguyên không âm vào trường Số nguyên (ví dụ: 255 hoặc 4096).
- Đọc giá trị nhị phân
Kết quả giá trị Nhị phân hiển thị biểu diễn cơ số 2.
- Kiểm tra hệ bát phân và thập lục phân
Xem lại kết quả Hệ bát phân và Hệ thập lục phân để có các biểu diễn rút gọn.
- Xác minh hệ thập phân
Đầu ra Hệ thập phân xác nhận giá trị ban đầu để đối chiếu.
Cách hoạt động của công cụ chuyển đổi cơ số này
Công cụ chuyển đổi cơ số này nhận một số nguyên ở hệ thập phân (cơ số 10) và biểu diễn nó dưới dạng nhị phân (cơ số 2), bát phân (cơ số 8) và thập lục phân (cơ số 16) — bốn hệ thống số được sử dụng phổ biến nhất trong tin học. Mọi hệ thống số theo vị trí đều hoạt động theo cùng một cách: mỗi vị trí chữ số đại diện cho một lũy thừa kế tiếp của cơ số, và giá trị của số là tổng của mỗi chữ số nhân với trọng số vị trí của nó. Chuyển đổi giữa các cơ số là một thao tác cơ bản trong lập trình cấp thấp, thiết kế logic kỹ thuật số, kỹ thuật mạng (địa chỉ MAC và IPv6), mã màu trong CSS, mặt nạ quyền tệp trong Unix và kiểm tra địa chỉ bộ nhớ trong quá trình gỡ lỗi.
Phép chia lặp lại: chia N cho cơ số đích R, ghi lại số dư, lặp lại với thương số cho đến khi bằng 0, sau đó đọc các số dư theo thứ tự ngược lại Chuyển đổi số thập phân 255 sang hệ nhị phân, bát phân và thập lục phân. Đối với hệ nhị phân (R = 2): 255 ÷ 2 = 127 dư 1, 127 ÷ 2 = 63 dư 1, 63 ÷ 2 = 31 dư 1, 31 ÷ 2 = 15 dư 1, 15 ÷ 2 = 7 dư 1, 7 ÷ 2 = 3 dư 1, 3 ÷ 2 = 1 dư 1, 1 ÷ 2 = 0 dư 1. Đọc các số dư từ dưới lên: 11111111. Đối với hệ bát phân (R = 8): 255 ÷ 8 = 31 dư 7, 31 ÷ 8 = 3 dư 7, 3 ÷ 8 = 0 dư 3 → 377. Đối với hệ thập lục phân (R = 16): 255 ÷ 16 = 15 dư 15 (F), 15 ÷ 16 = 0 dư 15 (F) → FF.
Thập phân 4096 → nhị phân 1000000000000, bát phân 10000, thập lục phân 1000. Hữu ích để hiểu 4 KiB = 4096 byte.
Thập phân 15 → nhị phân 1111, bát phân 17, thập lục phân F. Mỗi chữ số thập lục phân ánh xạ chính xác đến bốn bit; F = 1111.
- ✓ Đầu vào là một số nguyên không âm (số không hoặc số nguyên dương). Các giá trị phân số và số âm yêu cầu các thuật toán mở rộng (ví dụ: bù hai cho hệ nhị phân có dấu) nằm ngoài phạm vi của công cụ này.
- ✓ Các chữ số thập lục phân trên 9 được biểu diễn bằng các chữ cái in hoa A–F, tuân theo quy ước trong hầu hết các ngôn ngữ lập trình, RFC và tài liệu phần cứng.
- ✓ Các số không ở đầu được lược bỏ khỏi kết quả. Đối với các biểu diễn có độ rộng cố định (ví dụ: nhị phân 8-bit hoặc 32-bit), hãy thêm các số không vào trước kết quả một cách thủ công để đạt độ rộng mong muốn.
- ✓ Máy tính chỉ chấp nhận các số nguyên không âm. Các giá trị trên 2^53 − 1 (Number.MAX_SAFE_INTEGER của JavaScript) bị từ chối để đảm bảo các chữ số hiển thị luôn chính xác.
- Mỗi chữ số thập lục phân tương ứng chính xác với bốn chữ số nhị phân (bit), và mỗi chữ số bát phân tương ứng chính xác với ba bit. Mối quan hệ này giúp việc chuyển đổi nhẩm giữa hệ thập lục phân, bát phân và nhị phân trở nên nhanh chóng khi bạn ghi nhớ 16 mẫu nibble.
- Các giá trị phổ biến đáng ghi nhớ: 0xFF = 255, 0x100 = 256, 0xFFFF = 65535, 0xFFFFFFFF = 4.294.967.295 (số nguyên 32-bit không dấu tối đa).
- Quyền tệp Unix sử dụng hệ bát phân: 755 nghĩa là rwxr-xr-x (chủ sở hữu đọc/ghi/thực thi, nhóm và những người khác đọc/thực thi). Mỗi chữ số bát phân mã hóa ba bit quyền.
- Mã màu hex trong CSS là ba giá trị byte thập lục phân nối tiếp nhau đại diện cho các kênh đỏ, lục và lam — ví dụ: #FF8800 là 255 đỏ, 136 lục, 0 lam.
- Lý thuyết hệ thống số theo vị trí — Knuth, D. E., The Art of Computer Programming, Quyển 2: Seminumerical Algorithms, Phần 4.1
- IEEE 754-2019 — Tiêu chuẩn cho Số thực dấu phẩy động (ngữ cảnh biểu diễn số nguyên)
- RFC 4291 — Kiến trúc địa chỉ IP Phiên bản 6 (ký hiệu thập lục phân cho IPv6)
Hiểu về các hệ thống số trong tin học
Mọi hệ thống số theo vị trí đều sử dụng một cơ số (radix) và gán cho mỗi chữ số một trọng số dựa trên vị trí của nó. Trong hệ thập phân (cơ số 10), chữ số ngoài cùng bên phải là hàng đơn vị, tiếp theo là hàng chục, rồi đến hàng trăm. Hệ nhị phân (cơ số 2) chỉ sử dụng 0 và 1, ánh xạ trực tiếp đến các trạng thái bật/tắt của bóng bán dẫn. Hệ bát phân (cơ số 8) nhóm ba bit cho mỗi chữ số và hệ thập lục phân (cơ số 16) nhóm bốn bit cho mỗi chữ số, sử dụng A–F cho các giá trị từ 10–15. Việc chuyển đổi giữa các cơ số sử dụng phép chia lặp lại: chia số đó cho cơ số đích, ghi lại số dư, lặp lại với thương số cho đến khi bằng không, sau đó đọc các số dư theo thứ tự ngược lại. Thuật toán này là nền tảng cho mọi quá trình chuyển đổi cơ số trong lập trình.
Các trường hợp sử dụng thực tế của việc chuyển đổi cơ số cho nhà phát triển
Các nhà phát triển sử dụng chuyển đổi cơ số khi kiểm tra kết xuất bộ nhớ (memory dump), gỡ lỗi các phép toán bitwise, giải thích quyền tệp và làm việc với mã màu. Quyền tệp Unix (ví dụ: 755) là hệ bát phân: mỗi chữ số mã hóa quyền đọc/ghi/thực thi cho chủ sở hữu, nhóm và những người khác. Mã màu hex trong CSS như #FF8800 là ba byte được nối lại trong hệ thập lục phân. Địa chỉ IPv6 được viết bằng hệ thập lục phân. Mặt nạ bit (bitmask) và cờ (flag) thường được biểu diễn bằng hệ thập lục phân để dễ đọc (0xFF cho mặt nạ byte, 0xFFFF cho 16 bit). Khi gỡ lỗi mã cấp thấp hoặc giao thức mạng, việc chuyển đổi giữa hệ thập phân, thập lục phân và nhị phân sẽ nhanh chóng tiết lộ các mẫu bit cơ bản.
Câu hỏi thường gặp về máy tính chuyển đổi cơ số
Tại sao hệ nhị phân, bát phân và thập lục phân được sử dụng trong máy tính?
Hệ nhị phân ánh xạ trực tiếp đến các trạng thái bật/tắt của bóng bán dẫn, khiến nó trở thành ngôn ngữ gốc của phần cứng. Hệ bát phân và thập lục phân là cách viết tắt gọn nhẹ cho hệ nhị phân — một chữ số hex đại diện cho đúng bốn bit và một chữ số bát phân đại diện cho ba bit — vì vậy các lập trình viên sử dụng chúng để biểu thị địa chỉ, mặt nạ bit và mã màu ngắn gọn hơn các chuỗi nhị phân dài.
Làm cách nào để chuyển đổi theo hướng ngược lại (ví dụ: từ hex sang thập phân)?
Nhân mỗi chữ số với lũy thừa vị trí của cơ số và cộng các kết quả lại. Ví dụ: hex 1A3 = 1×16² + 10×16¹ + 3×16⁰ = 256 + 160 + 3 = 419 trong hệ thập phân.
Điều gì xảy ra với các số rất lớn?
Máy tính chỉ chấp nhận các giá trị lên đến giới hạn số nguyên an toàn của JavaScript: 2^53 − 1 (9.007.199.254.740.991). Các số lớn hơn bị từ chối vì chúng có thể mất các chữ số ít quan trọng nhất trong trình duyệt.
Tôi có thể chuyển đổi số âm hoặc phân số không?
Công cụ này xử lý các số nguyên không âm. Số nguyên âm trong máy tính thường được biểu diễn bằng bù hai trong một độ rộng bit cố định, và các giá trị phân số sử dụng mã hóa dấu phẩy động IEEE 754 — cả hai đều yêu cầu các tham số bổ sung mà máy tính này không thu thập.
Tại sao tiền tố 0x xuất hiện trong mã nhưng không có trong kết quả đầu ra?
Tiền tố 0x (và 0b cho hệ nhị phân, 0o cho hệ bát phân) là cú pháp hằng số đặc thù của ngôn ngữ, cho trình biên dịch hoặc trình thông dịch biết cơ số cần mong đợi. Máy tính xuất ra chuỗi chữ số thô không có tiền tố để có thể sử dụng trong mọi ngữ cảnh.