Chuyển Đổi Hệ Cơ Số Số Học (BIN/HEX/DEC/OCT) Hỗ Trợ Số Âm

Thế giới máy tính hoạt động dựa trên số 0 và 1, nhưng con người lại suy nghĩ bằng hệ thập phân. Còn các lập trình viên? Họ phải hiểu tất cả những gì nằm giữa hai thế giới đó. Cho dù bạn đang gỡ lỗi mã cấp thấp, cài đặt màu trong CSS, tính toán mặt nạ IP hay giải quyết các bài toán khoa học máy tính, bạn đều cần phải chuyển đổi số giữa các hệ cơ số khác nhau.

Các máy tính thông thường trên Windows hoặc điện thoại di động thường chậm và cồng kềnh. Công cụ chuyển đổi hệ cơ số thông minh của chúng tôi được thiết kế bởi các nhà phát triển dành cho các nhà phát triển. Nó cung cấp khả năng chuyển đổi tức thì trong thời gian thực, hỗ trợ các số cực lớn và là một trong số ít công cụ trực tuyến xử lý chính xác các số âm ở dạng nhị phân.

Công cụ chuyển đổi hệ cơ số này có thể làm gì?

Khi phát triển tiện ích này, chúng tôi đã tập trung giải quyết những vấn đề thường gặp nhất của các lập trình viên:

  1. Phản ứng theo thời gian thực: Không có nút “Tính toán”. Bạn chỉ cần bắt đầu nhập vào trường HEX và ngay lập tức thấy BIN và DEC thay đổi.
  2. Hỗ trợ số âm (Signed Integers): Hầu hết các công cụ chuyển đổi trực tuyến đều thất bại khi bạn nhập -5. Chúng tôi thì không. Nhờ tùy chọn độ sâu bit (8, 16, 32, 64 bit), chúng tôi mô phỏng chính xác hoạt động của bộ xử lý bằng cách sử dụng bổ sung hai (Two’s Complement).
  3. Dễ đọc mã nhị phân: Nhìn 1110101011011110 rất mỏi mắt. Công cụ của chúng tôi có thể tự động định dạng đầu ra thành các nhóm 4 bit (nibbles) như 1110 1010 1101 1110, giúp giảm đáng kể lỗi khi sao chép.
  4. Hỗ trợ BigInt: Bạn cần chuyển đổi một số 64-bit hoặc hash? JavaScript tiêu chuẩn dừng lại ở số $2^{53}$. Công cụ của chúng tôi có thể xử lý các số có độ dài tùy ý ở chế độ “Không dấu” (Unsigned).

Hướng dẫn về Hệ Cơ Số Số Học: Khi nào nên sử dụng hệ nào?

1. Hệ Thập phân (DEC - Decimal)

  • Cơ số: 10 (chữ số 0-9)
  • Sử dụng: Cuộc sống hàng ngày, tài chính, đếm vòng lặp trong mã.
  • Điều thú vị: Máy tính không hiểu nó, chúng phải chuyển đổi nó sang nhị phân.

2. Hệ Nhị phân (BIN - Binary)

  • Cơ số: 2 (chữ số 0, 1)
  • Sử dụng: Mã máy, cổng logic, che dấu địa chỉ IP.
  • Mẹo: Mỗi chữ số đại diện cho một bit. 8 bit tạo thành 1 byte.

3. Hệ Thập lục phân (HEX - Hexadecimal)

  • Cơ số: 16 (chữ số 0-9, chữ cái A-F)
  • Sử dụng: Cách viết gọn mã nhị phân. Một ký tự HEX đại diện chính xác 4 bit (nibble). Hai ký tự (ví dụ: FF) đại diện cho một byte hoàn chỉnh.
  • Ví dụ:
    • Màu sắc trên web: #FF5733 (Đỏ, Xanh lá, Xanh dương).
    • Địa chỉ MAC: 00:1A:2B:3C:4D:5E.
    • Kết xuất bộ nhớ (Memory dumps).

4. Hệ Bát phân (OCT - Octal)

  • Cơ số: 8 (chữ số 0-7)
  • Sử dụng: Các máy tính cũ hơn trong lịch sử, ngày nay chủ yếu là quyền hạn Linux (chmod).
  • Ví dụ: Lệnh chmod 755 đặt quyền rwx-rx-rx (đọc, ghi, thực thi).

Cách làm việc chính xác với số âm?

Đây là tính năng nâng cao nhất của công cụ chuyển đổi của chúng tôi. Trong bộ nhớ máy tính, không có dấu “trừ”. Để máy tính lưu trữ một số âm, nó thường sử dụng phương pháp bù hai (Two’s Complement).

Tuy nhiên, kết quả chuyển đổi của một số âm phụ thuộc vào số bit được dành riêng cho biến đó. Do đó, bạn sẽ tìm thấy nút chuyển đổi Độ sâu Bit ở thanh trên cùng.

Ví dụ: Số -5 trông như thế nào?

Bạn có thể tự thử trong công cụ chuyển đổi của chúng tôi:

  1. Đặt độ sâu bit thành 8-bit.

    • Nhập vào DEC: -5.
    • Kết quả HEX: FB.
    • Kết quả BIN: 1111 1011.
    • Giải thích: $256 - 5 = 251$ (đó là FB).
  2. Đặt độ sâu bit thành 16-bit.

    • Nhập vào DEC: -5.
    • Kết quả HEX: FFFB.
    • Giải thích: Vì chúng ta có nhiều không gian hơn, các bit “một” sẽ lấp đầy phần còn lại ở bên trái.
  3. Đặt độ sâu bit thành Chỉ số dương (Unsigned).

    • Nếu bạn nhập -5, trường sẽ chuyển sang màu đỏ. Chế độ này không hỗ trợ số âm vì nó sẽ yêu cầu vô số bit một.

Mẹo chuyên nghiệp: Nếu bạn làm việc với màu sắc hoặc địa chỉ IP, hãy luôn sử dụng chế độ “Chỉ số dương”. Nếu bạn làm bài tập C/C++ hoặc assembly, hãy chuyển sang 32-bit hoặc 64-bit.


Bảng chuyển đổi nhanh (Cheat Sheet)

Để dễ dàng tham khảo nhanh, đây là các giá trị cơ bản mà mọi “dân IT” nên biết thuộc lòng.

Thập phân (DEC)Thập lục phân (HEX)Nhị phân (BIN)Ghi chú
0000000Số không
1010001
100A1010
150F1111Giá trị tối đa của 4 bit (Nibble)
16100001 0000
1277F0111 1111Giá trị tối đa cho 8-bit có dấu (char)
255FF1111 1111Giá trị tối đa cho 8-bit không dấu (byte)
65 535FFFFGiá trị tối đa cho 16-bit

Các câu hỏi thường gặp (FAQ)

"Độ sâu Bit" (Bit Depth) nghĩa là gì? Nó xác định dung lượng bộ nhớ được dành riêng cho một số.
  • 8-bit: Giá trị từ 0 đến 255 (hoặc -128 đến 127). Tương ứng với kiểu char hoặc byte.
  • 16-bit: Giá trị lên đến 65 535. Tương ứng với kiểu short.
  • 32-bit: int tiêu chuẩn trong các ngôn ngữ hiện đại.
  • 64-bit: Dành cho các số rất lớn (long long, BigInt).
Tại sao số 255 được viết là FF trong hệ HEX? Hệ thập lục phân có 16 chữ số (0-9 và A-F), trong đó F có giá trị là 15. Số FF được tính như sau: $(15 \times 16^1) + (15 \times 16^0) = 240 + 15 = 255$.
Làm thế nào để chuyển đổi màu HEX sang RGB? Màu sắc trên web, ví dụ: #E05412, bao gồm ba byte: Đỏ (E0), Xanh lá (54), Xanh dương (12). Nhập "E0" vào trường HEX trong công cụ chuyển đổi của chúng tôi -> bạn sẽ nhận được 224. Nhập "54" -> bạn sẽ nhận được 84. Nhập "12" -> bạn sẽ nhận được 18. Kết quả là rgb(224, 84, 18).
Tiền tố 0x, 0b hoặc 0o có nghĩa là gì? Để các lập trình viên phân biệt các hệ cơ số, các tiền tố sau được sử dụng:
  • 0x = Thập lục phân (ví dụ: 0xFF)
  • 0b = Nhị phân (ví dụ: 0b101)
  • 0o = Bát phân (ví dụ: 0o755)
Công cụ chuyển đổi của chúng tôi nhận diện các ký hiệu này, nhưng không bắt buộc phải nhập chúng.
Tại sao trường nhập liệu của tôi chuyển sang màu đỏ? Đó là chức năng xác thực đầu vào. Điều đó có nghĩa là bạn đã nhập một ký tự không thuộc hệ cơ số đó. Ví dụ:
  • Chữ "G" vào HEX (chỉ cho phép A-F).
  • Chữ số "2" vào BIN (chỉ cho phép 0 và 1).
  • Chữ số "8" vào OCT (chỉ cho phép 0-7).
Hãy sửa lỗi chính tả và quá trình tính toán sẽ tiếp tục.