Hệ vị trí là gì
Trong số thập phân 4.095, chữ số 4 không có giá trị 4: nó có giá trị 4.000, vì đứng ở hàng nghìn. Mỗi vị trí nhân chữ số với một lũy thừa của 10 (1, 10, 100, 1.000…). Đó là hệ vị trí, và cơ số là số lượng chữ số khác nhau được dùng: mười chữ số với hệ thập phân.
Nhị phân hoạt động y hệt, nhưng với cơ số 2: chỉ có 0 và 1, và mỗi hàng có giá trị gấp đôi hàng trước. Thập lục phân dùng cơ số 16: mười sáu chữ số là 0 đến 9 và các chữ cái A đến F, và mỗi hàng có giá trị gấp 16 lần hàng trước. Máy tính làm việc bằng nhị phân vì một mạch điện chỉ cần phân biệt hai trạng thái (tắt và bật), còn thập lục phân là cách viết ngắn gọn các bit đó.
| Vị trí (từ phải sang trái) | Giá trị trong nhị phân | Giá trị trong thập lục phân |
|---|---|---|
| Thứ 1 | 1 | 1 |
| Thứ 2 | 2 | 16 |
| Thứ 3 | 4 | 256 |
| Thứ 4 | 8 | 4.096 |
| Thứ 5 | 16 | 65.536 |
| Thứ 6 | 32 | 1.048.576 |
| Thứ 7 | 64 | 16.777.216 |
| Thứ 8 | 128 | 268.435.456 |
Từ nhị phân sang thập phân, bằng tay
Ghi mỗi chữ số cùng giá trị của hàng của nó và chỉ cộng những hàng có chữ số 1. Ví dụ với 1101: từ phải sang trái các hàng có giá trị 1, 2, 4 và 8.
- Viết số đó và bên dưới là giá trị của từng vị trí: 1 1 0 1 phía trên 8 4 2 1.
- Xem mỗi hàng có gì: một số 1 ở hàng 8, một số 1 ở hàng 4, một số 0 ở hàng 2 và một số 1 ở hàng 1.
- Bỏ qua những hàng có số 0 (ở đây là hàng 2).
- Cộng lại: 8 + 4 + 0 + 1 = 13. Vậy 1101 trong hệ nhị phân là 13 trong hệ thập phân.
Với nhiều chữ số hơn thì cũng như vậy: 11111111 là 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255, giá trị lớn nhất chứa được trong 8 bit. Và 10110110 là 128 + 32 + 16 + 4 + 2 = 182.
Từ thập phân sang nhị phân, bằng các phép chia liên tiếp
Chia số đó cho 2 hết lần này đến lần khác, ghi lại số dư của mỗi phép chia (luôn là 0 hoặc 1), cho đến khi thương bằng 0. Các số dư, đọc từ dưới lên trên, chính là số nhị phân. Ví dụ với 45:
- 45 ÷ 2 = 22, dư 1
- 22 ÷ 2 = 11, dư 0
- 11 ÷ 2 = 5, dư 1
- 5 ÷ 2 = 2, dư 1
- 2 ÷ 2 = 1, dư 0
- 1 ÷ 2 = 0, dư 1
Đọc các số dư từ dưới lên trên ta được 101101. Để kiểm tra, hãy cộng: 32 + 8 + 4 + 1 = 45.
Có một phương pháp khác mà nhiều người thích hơn: trừ dần các lũy thừa của 2 từ lớn đến nhỏ. Với 200: chứa được 128 (còn 72), chứa được 64 (còn 8), không chứa được 32 và 16, nhưng chứa được 8 (còn 0). Các hàng được dùng là 128, 64 và 8, nên 200 = 11001000.
Thập lục phân: mười sáu chữ số và một bảng để tra
Vì không có chữ số nào cho 10 đến 15, người ta dùng các chữ cái A, B, C, D, E và F. Một chữ số thập lục phân tương đương chính xác bốn bit (một «nibble»), và vì thế rất tiện: một byte, gồm 8 bit, chỉ cần hai chữ số thập lục phân.
Để đổi từ thập lục phân sang thập phân, nhân mỗi chữ số với lũy thừa của 16 ở hàng của nó rồi cộng lại. Ví dụ, 3F = 3 × 16 + 15 = 63 và A3 = 10 × 16 + 3 = 163.
| Thập phân | Nhị phân (4 bit) | Bát phân | Thập lục phân |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
Vì sao dùng thập lục phân: byte, màu sắc và địa chỉ
Một byte là 8 bit và có giá trị từ 0 đến 255 (00000000 đến 11111111). Viết bit bằng tay vừa chậm vừa dễ sai; trong thập lục phân, cùng một byte chỉ là hai ký tự, từ 00 đến FF. Để đổi từ nhị phân sang thập lục phân, chia các bit thành nhóm bốn từ bên phải và thay mỗi nhóm bằng chữ số trong bảng. Ví dụ: 11010111 được tách thành 1101 và 0111, là D và 7, nên bằng D7. Theo thập phân là 13 × 16 + 7 = 215.
Trường hợp quen thuộc nhất là màu trên web. Trong #FF8800 có ba byte: FF cho màu đỏ (255), 88 cho màu xanh lá (136) và 00 cho màu xanh dương (0). Đó là màu cam đậm: đủ cả màu đỏ, hơn một nửa màu xanh lá và không có màu xanh dương. Thập lục phân cũng xuất hiện trong địa chỉ bộ nhớ, mã lỗi và định danh mạng.
Từ văn bản sang nhị phân với ASCII
Máy tính lưu mỗi chữ cái dưới dạng một con số, và con số đó dưới dạng bit. Trong bảng ASCII, chữ A là 65, mà trong nhị phân 8 bit là 01000001. Từ «Hi» gồm hai chữ cái: H là 72 (01001000) và i là 105 (01101001), nên được viết là 01001000 01101001. Với «Hola» là 72, 111, 108 và 97, tức 01001000 01101111 01101100 01100001, hay trong thập lục phân là 48 6F 6C 61.
Công cụ dùng bảng mã UTF-8: với các chữ cái tiếng Anh cơ bản, mỗi ký tự chiếm một byte 8 bit, nhưng một chữ có dấu như ơ hay ế, hoặc một emoji, chiếm nhiều byte nên cho ra hơn 8 bit. Ví dụ, chữ ñ là hai byte: 11000011 10110001 (C3 B1 trong thập lục phân).
Cách làm tất cả những việc này với công cụ
Công cụ đổi «Nhị phân, thập phân và thập lục phân» dùng để kiểm tra các phép tính tay của bạn hoặc xử lý số dài mà không sai sót.
- Nhập số vào ô của cơ số tương ứng: «Thập phân (cơ số 10)», «Nhị phân (cơ số 2)», bát phân hoặc «Thập lục phân (cơ số 16)». Ba ô còn lại tự điền.
- Nếu chữ số không thuộc cơ số đó (ví dụ số 2 trong nhị phân), công cụ sẽ báo cho bạn.
- Với văn bản, hãy gõ vào ô «Văn bản» và xem «Nhị phân (8 bit mỗi ký tự)» cùng thập lục phân theo byte. Bạn cũng có thể dán các bit theo nhóm 8 để quay lại văn bản.
- Với các cơ số lạ, dùng «Cơ số bất kỳ (từ 2 đến 36)»: chọn cơ số gốc, cơ số đích và nhập số.
Giới hạn: công cụ chỉ đổi số nguyên không âm (không có phần thập phân và dấu) và không tự thêm các số 0 ở đầu, nên nếu bạn muốn đúng 8 bit thì phải tự bổ sung (13 là 00001101). Không có gì bạn nhập rời khỏi trình duyệt của bạn.
Những lỗi thường gặp
- Đọc số dư theo chiều ngược lại: trong các phép chia liên tiếp, số dư đầu tiên là chữ số ngoài cùng bên phải, không phải bên trái.
- Quên các số 0 ở đầu khi cần: 13 là 1101, nhưng khi là một byte thì là 00001101. Điều này quan trọng khi độ dài là một phần của dữ liệu, như trong một màu hay một mặt nạ mạng.
- Nhầm chữ O với số 0 hoặc chữ B thập lục phân (11) với số 8 khi sao chép. Trong thập lục phân, chữ hoa và chữ thường có giá trị như nhau, nhưng chúng không giống một chữ số.
- Để nguyên tiền tố 0x hoặc dấu # khi đổi: đó chỉ là dấu hiệu cho biết số là thập lục phân và cần bỏ đi trước khi dán.
- Nghĩ rằng 10 trong nhị phân là mười: nó là hai. Cùng một «10» có giá trị 2, 10 hoặc 16 tùy cơ số.
Bài tập giải sẵn để luyện tập
Hãy thử giải từng bài trước khi xem đáp án rồi kiểm tra lại bằng công cụ.
- Đổi 10110110 sang thập phân và thập lục phân. Đáp án: 128 + 32 + 16 + 4 + 2 = 182; chia nhóm bốn, 1011 0110 = B6.
- Đổi 200 sang nhị phân và thập lục phân. Đáp án: 11001000 và C8 (12 × 16 + 8 = 200).
- Đổi 7F sang nhị phân. Đáp án: 7 = 0111 và F = 1111, nên 01111111, trong thập phân là 127.
- Viết «OK» bằng nhị phân. Đáp án: O là 79 và K là 75, tức 01001111 01001011.
Câu hỏi thường gặp
Làm sao đổi 1101 từ nhị phân sang thập phân?
Cộng các giá trị của những hàng có số 1: 8 + 4 + 1 = 13. Chữ số thứ hai từ bên phải là 0 nên không cộng 2.
255 là bao nhiêu trong nhị phân và thập lục phân?
255 là 11111111 trong nhị phân và FF trong thập lục phân. Đây là giá trị lớn nhất chứa được trong một byte 8 bit.
Vì sao thập lục phân dùng chữ cái?
Vì nó cần mười sáu ký hiệu khác nhau mà hệ thập phân chỉ có mười (0 đến 9). Vì thế A là 10, B là 11, C là 12, D là 13, E là 14 và F là 15.
Với 8 bit có thể viết được bao nhiêu số khác nhau?
256, từ 0 đến 255. Nói chung, với n bit có thể biểu diễn 2 mũ n giá trị.
Công cụ có đổi số âm hoặc số có phần thập phân không?
Không, chỉ số nguyên không âm. Với văn bản, công cụ dùng UTF-8 nên chữ có dấu và emoji cho ra hơn 8 bit.