Cách sử dụng
- Nhập số bạn muốn chuyển đổi.
- Ở mục Cơ số đầu vào, chọn cơ số mà số đó đang được viết, từ 2 đến 36 hoặc Base62.
- Đọc kết quả ở dạng nhị phân, bát phân, thập phân, hex, Base36 và Base62 cùng lúc.
- Với bất kỳ cơ số nào khác, hãy chọn nó ở mục Cơ số tùy chỉnh.
Con số, không phải byte
Công cụ này chuyển đổi giá trị của một con số. Số thập phân 255 là 11111111 ở hệ nhị phân, 377 ở hệ bát phân, ff ở hệ hex và 73 ở Base36.
Các kiểu mã hóa byte như Base16 và Base2 làm một việc khác: chúng mã hóa văn bản hoặc tệp. Văn bản 255 gồm ba ký tự, được lưu thành các byte 32 35 35 ở dạng hex, hoặc 00110010 00110101 00110101 ở dạng nhị phân. Hãy dùng trang này khi cần hex của một con số, và dùng các công cụ mã hóa byte khi cần hex của ký tự hoặc tệp.
Hệ cơ số theo vị trí hoạt động như thế nào
Trong mọi hệ cơ số, mỗi chữ số có giá trị bằng cơ số lũy thừa theo vị trí của nó, đếm từ phải sang và bắt đầu từ 0. Hex ff là 15 × 16 + 15 = 255, còn nhị phân 11111111 là 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255. Các cơ số lớn hơn 10 dùng tiếp chữ cái làm chữ số, nên trong Base36 a nghĩa là 10 và z nghĩa là 35. Base62 còn thêm cả kiểu chữ còn lại, nên ở đó chữ hoa và chữ thường có giá trị khác nhau.
Một chữ số hex đại diện cho đúng 4 bit, một chữ số bát phân cho 3 bit. Đó là lý do lập trình viên dùng hex và bát phân như cách viết tắt của nhị phân: 1111 1111 trở thành ff theo từng nhóm.
Số lớn và số âm
Công cụ dùng số nguyên có độ chính xác tùy ý (BigInt của JavaScript), nên các số dài vẫn được giữ chính xác. Nhiều máy tính bỏ túi và kiểu số thông thường của JavaScript mất độ chính xác khi vượt quá 9007199254740991 (2 mũ 53 trừ 1). Ví dụ, parseInt('ffffffffffffffff', 16) trả về 18446744073709552000, trong khi giá trị đúng, tức số nguyên không dấu 64 bit lớn nhất, là 18446744073709551615.
Số âm được chuyển đổi kèm dấu trừ, nên -255 là -ff ở dạng hex. Đây không phải dạng bù hai dùng cho số nguyên có độ rộng cố định trong bộ nhớ. Để có dạng đó, trước tiên hãy cộng thêm 2 mũ độ rộng: với 8 bit, -1 + 256 = 255, tức ff. Công cụ chỉ hỗ trợ số nguyên, không hỗ trợ phân số. Mọi thứ đều chạy trong trình duyệt của bạn.
Chuyển đổi cơ số trong mã nguồn
// JavaScript
parseInt('ff', 16); // 255
(255).toString(2); // '11111111'
BigInt('0xffffffffffffffff').toString(10); // '18446744073709551615'
# Python
int('ff', 16) # 255
bin(255), oct(255), hex(255) # ('0b11111111', '0o377', '0xff')
Câu hỏi thường gặp
Làm sao để đổi số nhị phân sang thập phân?
Nhập số nhị phân, chọn cơ số 2 và đọc kết quả thập phân. Nếu tính tay, hãy cộng giá trị vị trí của mọi chữ số 1: 1010 ở hệ nhị phân là 8 + 2 = 10.
Làm sao để đổi số thập phân sang hex?
Nhập số với cơ số 10 được chọn và đọc kết quả hex. Nếu tính tay, hãy chia liên tiếp cho 16 rồi viết các số dư theo thứ tự ngược lại: 255 chia 16 được 15 dư 15, cho ra ff.
Độ lớn của số có bị giới hạn không?
Không có giới hạn cố định. Công cụ dùng phép tính BigInt, nên một số có hàng trăm chữ số vẫn được chuyển đổi chính xác. Các số rất dài chỉ mất thêm một chút thời gian.
Vì sao hex của 255 ở đây khác với công cụ mã hóa Base16?
Tôi có thể chuyển đổi số có phần thập phân không?
Không. Công cụ chỉ làm việc với số nguyên. Các phân số như 0,1 thường không có biểu diễn chính xác ở cơ số khác, nên chúng nằm ngoài phạm vi của công cụ.