arrow_backQuay lại ghi chép lĩnh vực
COMPUTER SCIENCE Đã đăng 5 Aug 2026

Binary, Hex, và Data Units Giải Thích

Một bảng thuật ngữ thực tế về binary, hexadecimal, và các quy ước data unit được sử dụng trong lập trình, mạng máy tính, và công việc pháp lý kỹ thuật số.

Mỗi byte bạn kiểm tra trong hex editor, mỗi subnet mask bạn tính toán, mỗi kích thước file mà công cụ báo cáo đều phụ thuộc vào một tập hợp nhỏ các hệ thống số và quy ước đơn vị. Nếu bạn hiểu sai những điều này, bạn sẽ đánh giá sai kích thước buffer, đọc sai memory dump, hoặc tranh cãi với đồng nghiệp về việc liệu 1 KB là 1000 hay 1024 bytes.

Binary: hệ thống số mà mỗi máy tính thực sự nói

Binary là cơ số 2 — chỉ có 0 và 1. Một chữ số binary là một bit. Nhóm 8 bit lại với nhau và bạn được một byte, có thể đại diện cho 256 giá trị riêng biệt (0 đến 255 không dấu, hoặc -128 đến 127 dấu two's complement).

Khi bạn thấy 01001000 đó là 72 trong hệ thập phân, cũng là mã ASCII cho 'H'. Chuyển đổi bằng tay chỉ là cộng các lũy thừa của 2 từ bit phải nhất: 2^6 + 2^3 = 64 + 8 = 72. Các công cụ như python3 -c "print(bin(72))" hoặc xxd trên một file sẽ thực hiện điều này tức thời, nhưng hiểu toán học này rất quan trọng khi bạn đang reverse engineering một bitmask hoặc tính toán các giá trị flag trong TCP header.

Hexadecimal: viết tắt của binary

Hex là cơ số 16, sử dụng 0-9 và A-F. Nó tồn tại vì binary không đọc được ở quy mô lớn và decimal không ánh xạ sạch đến ranh giới byte. Một chữ số hex đại diện cho chính xác 4 bit, vì vậy hai chữ số hex đại diện cho một byte đầy đủ — 0x00 đến 0xFF bao gồm tất cả 256 giá trị byte mà không lãng phí chỗ.

Đây là lý do tại sao hex dumps là mặc định trong các công cụ như xxd, hexdump -C, hoặc memory view của disassembler. Khi bạn thấy 0x4D 0x5A ở đầu một file, đó là MZ header xác định một Windows PE executable. Địa chỉ bộ nhớ, mã màu (#FF5733), địa chỉ MAC, và địa chỉ IPv6 đều được viết theo quy ước trong hex vì nó ánh xạ rất sạch lẽn cấu trúc byte và nibble cơ bản.

Chuyển đổi hex sang decimal: 0x4D = (4 × 16) + 13 = 77. Trong Python, int('4D', 16) giúp bạn đến đó mà không cần toán bằng tay, và hex(77) đi theo chiều khác.

Nơi binary, decimal, và hex thực sự gặp nhau trong thực tế

IP addresses là một ví dụ tốt về cả ba va chạm. Một địa chỉ IPv4 như 192.168.1.1 thực sự là bốn bytes: 11000000.10101000.00000001.00000001 trong binary, hoặc C0.A8.01.01 trong hex. Toán subnetting — tìm hiểu xem hai địa chỉ có trên cùng một mạng hay không — từ cơ bản là các phép toán binary AND với một subnet mask, mặc dù chúng ta viết mọi thứ trong dotted decimal để tiện.

Trong digital forensics và malware analysis, bạn liên tục dịch giữa các biểu diễn này. Một disassembler hiển thị opcodes trong hex, nhưng CPU thực thi binary thô, và các giá trị register thường được diễn giải như decimal offsets hoặc ASCII strings tùy thuộc vào ngữ cảnh. Biết rằng 0x41 vừa là số 65 vừa là ký tự ASCII 'A' là loại nhận dạng mẫu giúp tốc độ phân tích thủ công lên đáng kể.

Data units: vấn đề 1000 vs 1024

Đây là nơi mọi người thực sự mắc lỗi. Các nhà sản xuất lưu trữ, filesystems, và hệ điều hành không phải lúc nào cũng đồng ý về những gì một

Viết với hỗ trợ của AI, được xem xét và đăng bởi Michal Pilch (CISSP), Korra Studio.

Sẵn sàng đi xa hơn?

Đây là một ghi chép từ cơ sở kiến thức Korra Studio — nền tảng kết hợp mỗi chủ đề với phiên hỗ trợ 1-kèm-1.

Bắt đầu miễn phíarrow_forward