Trong thế giới kỹ thuật số, mọi thông tin, từ số liệu đến văn bản, đều được biểu diễn dưới dạng số nhị phân. Để các mạch số có thể hiểu và xử lý thông tin này, cần có các quy tắc và phương pháp mã hóa khác nhau. Bài viết này sẽ khám phá các loại mã phổ biến như BCD, ASCII, Excess-3, Gray và cách chuyển đổi giữa các hệ thống số, cũng như các phép toán số học trong hệ nhị phân.
Mục Lục
- 1 Mã BCD (Binary Coded Decimal)
- 2 Mã ASCII (American Standard Code for Information Interchange)
- 3 Mã Thừa 3 (Excess-3 code)
- 4 Mã Gray
- 5 Phát hiện lỗi bằng bit chẵn lẻ
- 6 Chuyển đổi giữa các hệ thống số
- 6.1 Từ nhị phân sang thập phân
- 6.2 Từ thập phân sang nhị phân
- 6.3 Từ bát phân sang thập phân
- 6.4 Từ thập phân sang bát phân
- 6.5 Từ bát phân sang nhị phân
- 6.6 Từ nhị phân sang bát phân
- 6.7 Từ thập lục phân sang thập phân
- 6.8 Từ thập phân sang thập lục phân
- 6.9 Từ thập lục phân sang nhị phân
- 6.10 Từ nhị phân sang thập lục phân
- 7 Tính toán với hệ thống số
- 8 Kết luận
Mã BCD (Binary Coded Decimal)
Mã BCD, hay mã số thập phân được mã hóa theo nhị phân, là một phương pháp biểu diễn các số thập phân từ 0 đến 9 bằng các số nhị phân 4 bit. Mỗi chữ số thập phân được thay thế bằng biểu diễn nhị phân tương ứng của nó.
| Thập phân | BCD (4 bit) |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
Lưu ý rằng các mã nhị phân từ 1010 đến 1111 không được sử dụng trong mã BCD vì chúng không tương ứng với bất kỳ chữ số thập phân nào.
Chuyển đổi giữa thập phân và BCD
Để chuyển đổi một số thập phân sang BCD, ta thay thế mỗi chữ số thập phân bằng mã BCD 4 bit tương ứng của nó. Ví dụ:
- 48910 = 0100 1000 1001 (BCD)
- 53710 = 0101 0011 0111 (BCD)
Ngược lại, để chuyển đổi từ BCD sang thập phân, ta chia chuỗi BCD thành các nhóm 4 bit và thay thế mỗi nhóm bằng chữ số thập phân tương ứng. Ví dụ:
- 0011 0100 1001 01012 (BCD) = 349510
So sánh BCD và nhị phân
BCD không phải là một hệ thống số hoàn chỉnh như nhị phân, thập phân hay thập lục phân. Thay vào đó, nó là một cách biểu diễn số thập phân, trong đó mỗi chữ số được mã hóa bằng giá trị nhị phân tương đương. Mã BCD cần nhiều bit hơn để biểu diễn các số thập phân nhiều chữ số so với biểu diễn nhị phân thông thường, vì nó không sử dụng tất cả các tổ hợp 4 bit có thể có.
Ưu điểm của BCD là dễ dàng chuyển đổi qua lại giữa thập phân và nhị phân.
Cộng BCD
Khi cộng hai số BCD, nếu tổng của hai chữ số nhỏ hơn hoặc bằng 9, ta thực hiện phép cộng nhị phân bình thường. Ví dụ: 6 + 2 = 8, được biểu diễn trong BCD là:
0110 (6)
+ 0010 (2)
= 1000 (8)
Nếu tổng lớn hơn 9, ta cần điều chỉnh bằng cách cộng thêm 6 (0110) vào kết quả. Điều này là do các mã từ 1010 đến 1111 không hợp lệ trong BCD. Ví dụ: 5 + 8 = 13, được biểu diễn trong BCD như sau:
0101 (5)
+ 1000 (8)
= 1101 (13 - không hợp lệ)
+ 0110 (6)
= 0001 0011 (13 - đã điều chỉnh)
Mã ASCII (American Standard Code for Information Interchange)
Mã ASCII là một tiêu chuẩn mã hóa ký tự được sử dụng rộng rãi để biểu diễn văn bản trong máy tính và các thiết bị truyền thông. Nó sử dụng 7 bit để biểu diễn 128 ký tự khác nhau, bao gồm các chữ cái (hoa và thường), chữ số, dấu câu và các ký tự điều khiển.
| Ký tự | Mã ASCII (7 bit) | Bát phân | Thập phân |
|---|---|---|---|
| A | 100 0001 | 101 | 65 |
| B | 100 0010 | 102 | 66 |
| C | 100 0011 | 103 | 67 |
| 0 | 011 0000 | 060 | 48 |
| 1 | 011 0001 | 061 | 49 |
| 2 | 011 0010 | 062 | 50 |
| . | 010 1110 | 056 | 46 |
| ( | 010 1000 | 050 | 40 |
Mã Thừa 3 (Excess-3 code)
Mã Thừa 3 là một loại mã BCD, trong đó mỗi chữ số thập phân được biểu diễn bằng mã nhị phân của nó cộng thêm 3. Ví dụ, số thập phân 2 được mã hóa thành 2 + 3 = 5, có mã nhị phân là 0101. Số 5 được mã hóa thành 5 + 3 = 8, có mã nhị phân là 1000.
Mã Gray
Mã Gray là một hệ thống mã hóa nhị phân, trong đó hai mã kế tiếp chỉ khác nhau ở một bit duy nhất. Điều này rất hữu ích trong các ứng dụng như bộ mã hóa vị trí, nơi sự thay đổi đột ngột trong nhiều bit có thể gây ra lỗi.
| Thập phân | Nhị phân | Mã Gray |
|---|---|---|
| 0 | 0000 | 0000 |
| 1 | 0001 | 0001 |
| 2 | 0010 | 0011 |
| 3 | 0011 | 0010 |
| 4 | 0100 | 0110 |
| 5 | 0101 | 0111 |
| 6 | 0110 | 0101 |
| 7 | 0111 | 0100 |
| 8 | 1000 | 1100 |
| 9 | 1001 | 1101 |
| 10 | 1010 | 1111 |
| 11 | 1011 | 1110 |
| 12 | 1100 | 1010 |
| 13 | 1101 | 1011 |
| 14 | 1110 | 1001 |
| 15 | 1111 | 1000 |
Phát hiện lỗi bằng bit chẵn lẻ
Để phát hiện lỗi trong quá trình truyền dữ liệu, người ta thường thêm một bit chẵn lẻ (parity bit) vào mã ASCII 7 bit, tạo thành một byte 8 bit.
- Kiểm tra chẵn (Even parity): Bit chẵn lẻ được chọn sao cho tổng số bit 1 trong byte là số chẵn.
- Kiểm tra lẻ (Odd parity): Bit chẵn lẻ được chọn sao cho tổng số bit 1 trong byte là số lẻ.
Ví dụ, với ký tự “A” (100 0001):
- Kiểm tra chẵn: 0100 0001 (tổng số bit 1 là 2, số chẵn)
- Kiểm tra lẻ: 1100 0001 (tổng số bit 1 là 3, số lẻ)
Nếu mạch nhận được một byte có số lượng bit 1 không phù hợp với quy ước chẵn lẻ, nó sẽ biết rằng dữ liệu đã bị lỗi.
Chuyển đổi giữa các hệ thống số
Từ nhị phân sang thập phân
Mỗi bit trong số nhị phân có một trọng số dựa trên vị trí của nó. Để chuyển đổi một số nhị phân sang thập phân, ta cộng các trọng số của các bit 1. Ví dụ:
101102 = (1 x 24) + (0 x 23) + (1 x 22) + (1 x 21) + (0 x 20) = 16 + 0 + 4 + 2 + 0 = 2210
Từ thập phân sang nhị phân
Có hai cách để chuyển đổi một số thập phân sang nhị phân:
- Tổng lũy thừa của 2: Biểu diễn số thập phân dưới dạng tổng các lũy thừa của 2, sau đó ghi các bit 0 và 1 vào vị trí tương ứng.
- Lặp lại phép chia cho 2: Chia số thập phân cho 2 và ghi lại số dư. Lặp lại quá trình này cho đến khi thương số bằng 0. Kết quả nhị phân được hình thành bằng cách viết các số dư theo thứ tự ngược lại (số dư đầu tiên là LSB, số dư cuối cùng là MSB).
Từ bát phân sang thập phân
Nhân mỗi chữ số bát phân với trọng số của nó (lũy thừa của 8) và cộng các kết quả lại. Ví dụ:
4758 = (4 x 82) + (7 x 81) + (5 x 80) = 256 + 56 + 5 = 31710
Từ thập phân sang bát phân
Sử dụng phương pháp lặp lại phép chia cho 8 và lấy số dư.
Từ bát phân sang nhị phân
Thay thế mỗi chữ số bát phân bằng số nhị phân 3 bit tương đương của nó. Ví dụ:
3468 = 011 100 1102
Từ nhị phân sang bát phân
Chia số nhị phân thành các nhóm 3 bit, bắt đầu từ LSB, và thay thế mỗi nhóm bằng chữ số bát phân tương đương. Thêm các bit 0 vào bên trái nếu cần thiết để hoàn thành nhóm 3 bit cuối cùng.
Từ thập lục phân sang thập phân
Nhân mỗi chữ số thập lục phân với trọng số của nó (lũy thừa của 16) và cộng các kết quả lại. Ví dụ:
45616 = (4 x 162) + (5 x 161) + (6 x 160) = 1024 + 80 + 6 = 111010
Từ thập phân sang thập lục phân
Sử dụng phương pháp lặp lại phép chia cho 16 và lấy số dư. Nếu số dư lớn hơn 9, hãy sử dụng các chữ cái A đến F để biểu diễn chúng.
Từ thập lục phân sang nhị phân
Thay thế mỗi chữ số thập lục phân bằng số nhị phân 4 bit tương đương của nó.
Từ nhị phân sang thập lục phân
Chia số nhị phân thành các nhóm 4 bit, bắt đầu từ LSB, và thay thế mỗi nhóm bằng chữ số thập lục phân tương đương. Thêm các bit 0 vào bên trái nếu cần thiết để hoàn thành nhóm 4 bit cuối cùng.
Tính toán với hệ thống số
Cộng số thập lục phân
Cộng hai chữ số thập lục phân trong hệ thập phân. Nếu tổng nhỏ hơn hoặc bằng 15, hãy biểu diễn nó bằng chữ số thập lục phân tương đương. Nếu tổng lớn hơn hoặc bằng 16, trừ 16 và nhớ 1 sang vị trí tiếp theo.
Cộng nhị phân
Cộng hai bit nhị phân theo các quy tắc sau:
- 0 + 0 = 0
- 0 + 1 = 1
- 1 + 0 = 1
- 1 + 1 = 10 (0 nhớ 1)
Trừ nhị phân
Thực hiện phép trừ tương tự như trừ thập phân, mượn 1 từ hàng cao hơn nếu cần thiết.
Biểu diễn số có dấu
- Bit dấu: Bit ngoài cùng bên trái (MSB) được sử dụng để biểu thị dấu của số (0 cho dương, 1 cho âm).
- Bù 1: Đảo tất cả các bit (0 thành 1, 1 thành 0).
- Bù 2: Lấy bù 1 và cộng thêm 1.
Nhân nhị phân
Thực hiện phép nhân tương tự như nhân thập phân, nhưng chỉ nhân với 0 hoặc 1.
Chia nhị phân
Thực hiện phép chia tương tự như chia thập phân.
Kết luận
Việc hiểu các hệ thống mã hóa số và ký tự khác nhau là rất quan trọng trong lĩnh vực điện tử và kỹ thuật máy tính. Các mã BCD, ASCII, Gray và các phương pháp chuyển đổi giữa các hệ thống số khác nhau là những công cụ thiết yếu để thiết kế và phát triển các hệ thống kỹ thuật số hiệu quả. Việc nắm vững các phép toán số học trong hệ nhị phân cũng rất quan trọng để hiểu cách máy tính thực hiện các phép tính toán cơ bản.
