Mã hóa số thập phân
Khi một số, một từ, một kí hiệu được biểu diễn bởi một nhóm các kí hiệu đặc biệt, ta gọi chúng được mã hoá, và nhóm kí hiệu đặc biệt đó được gọi là mã.
Bảng sau giới thiệu một số loại mã thông dụng được dùng để mã hoá số thập phân. Các trạng thái x không được sử dụng.
Bảng 1. Một số loại mã thông dụng được dùng để mã hoá số thập phân.
Decimal | Nhị phân | BCD [8421] | BCD 2421 | Quá 3 | Gray | Biquinary | 1 trong 10 |
0 | 0000 | 0000 | 0000 | 0011 | 0000 | 0100001 | 1000000000 |
1 | 0001 | 0001 | 0001 | 0100 | 0001 | 0100010 | 0100000000 |
2 | 0010 | 0010 | 0010 | 0101 | 0011 | 0100100 | 0010000000 |
3 | 0011 | 0011 | 0011 | 0110 | 0010 | 0101000 | 0001000000 |
4 | 0100 | 0100 | 0100 | 0111 | 0110 | 0110000 | 0000100000 |
5 | 0101 | 0101 | 1011 | 1000 | 0111 | 1000001 | 0000010000 |
6 | 0110 | 0110 | 1100 | 1001 | 0101 | 1000010 | 0000001000 |
7 | 0111 | 0111 | 1101 | 1010 | 0100 | 1000100 | 0000000100 |
8 | 1000 | 1000 | 1110 | 1011 | 1100 | 1001000 | 0000000010 |
9 | 1001 | 1001 | 1111 | 1100 | 1101 | 1010000 | 0000000001 |
10 | 1010 | x | x | x | 1111 | x | x |
11 | 1011 | x | x | x | 1110 | x | x |
12 | 1100 | x | x | x | 1010 | x | x |
13 | 1101 | x | x | x | 1011 | x | x |
14 | 1110 | x | x | x | 1001 | x | x |
15 | 1111 | x | x | x | 1000 | x | x |
1. Mã BCD [Binary-Coded-Decimal]
- Mã BCD còn được gọi là mã 8421 được dùng để mã hoá các ký số của một số thập phân.
- Để chuyển một số thập phân sang mã BCD, ta thay thế từng ký số thành 4 bit nhị phân tương ứng.
Bảng 2. Một số kí tự được mã hóa mã BCD
7 | 0111 |
8 | 1000 |
9 | 1001 |
A | 1010 |
B | 1011 |
C | 1100 |
D | 1101 |
E | 1110 |
F | 1111 |
- Mã BCD chỉ bao gồm các tổ hợp nhị phân từ 0000 đến 1001, các tổ hợp nhị phân từ 1010 đến 1111 không thuộc bộ mã BCD.
Ví dụ: đổi số 253,86D sang mã BCD
253,86D = 0010 0101 0011,1000 0110 BCD
Mã BCD dùng rất thuận lợi: mạch điện tử đọc các số BCD và hiển thị ra bằng đèn bảy đoạn [led hoặc LCD] hoàn toàn giống như con người đọc và viết ra số thập phân.
2. Mã BCD 2421
- Mã BCD 2421 cũng được dùng để biểu diễn một số thập phân.
- Mã BCD 2421 là một tổ hợp nhị phân 4 bit có trọng số 2-4-2-1, không bao gồm các tổ hợp nhị phân từ 0101 đến 1010.
- Mã BCD 2421 có tính tự bù [bù cơ số]
Ví dụ: Mã 2421 của số 0 là 0000, bù với mã 2421 của số 9 là 1111 - Mã 2421 của số 4 là 0100, bù với mã 2421 của số 5 là 1011.
3. Mã quá 3
- Mã quá 3 được tạo ra từ mã 8421 bằng cách cộng thêm 3.
- Mã quá 3 là loại mã không có trọng số.
- Mã quá 3 cũng có thể dùng để diễn tả một ký số thập phân.
- Mã quá 3 cũng có tính tự bù.
Ví dụ:
- Mã quá 3 của số 0 là 0011, bù với mã quá 3 của số 9 là 1100
- Mã quá 3 của số 3 là 0110, bù với mã quá 3 của số 6 là 1001
4. Mã Gray
- Mã Gray là loại mã không có trọng số.
- Mã Gray có đặc điểm là hai giá trị mã liên tiếp chỉ khác nhau tại một bit. Do đó mã Gray không phù hợp với các phép tính số học nhưng có một số ứng dụng quan trọng trong các thiết bị vào ra và ở một số thiết bị chuyển đổi liên tục.
- Mã Gray N bit được suy ra từ mã nhị phân N bit theo quy luật sau:
Phương pháp 1: Các bit của mã nhị phân và mã Gray được đánh số từ phải sang trái, từ 0 đến N-1. Bit thứ i của mã Gray sẽ là 0 nếu các bit thứ i và i+1 của mã nhị phân tương ứng giống nhau, nếu không thì bit thứ i sẽ là 1. [Khi i+1 = N, bit thứ N của mã nhị phân được hiểu là 0].
Phương pháp 2: Đi từ trái sang phải, bit đi sau bit 0 [của mã nhị phân tương ứng] được giữ nguyên, bit đi sau bit 1 [của mã nhị phân tương ứng] thì bị đảo [từ 0 thành 1, từ 1 thành 0].
Ngoài ra, mã Gray còn được gọi là mãphản chiếu [do tính đối xứng của các số hạng trong tập hợp mã, giống như phản chiếu qua gương]
Người ta có thể thiết lập mã Gray bằng cách dựa vào tính đối xứng này:
- Giả sử ta đã có tập hợp 2ntừ mã của số n bit thì có thể suy ra tập hợp 2n+1 từ mã của số [n + 1] bit bằng cách:
- Viết ra 2ntừ mã theo thứ tự từ nhỏ đến lớn
- Thêm số 0 vào trước tất cả các từ mã đã có để được một phần của tập hợp từ mã mới
- Phần thứ hai của tập hợp gồm các từ mã giống như phần thứ nhất nhưng trình bày theo thứ tự ngược lại [giống như phản chiếu qua gương] và phía trước thêm vào số 1 thay vì số 0.
5. Mã Biquinary
- Sử dụng 7 bit để biểu diễn các ký số thập phân từ 0 đến 9.
- Hai bit đầu của mã giúp phân biệt các mã từ 0 đến 4 và từ 5 đến 9 [0 4 hai bit đầu là 01, 5 9 hai bit đầu là 10]. Năm bit cuối biểu diễn trong hai tầm 0 4 và 5 9
- Ưu điểm của mã Biquinary là có tính phát hiện sai. Trong mã này, nếu có bất kỳ bit nào của từ mã khi truyền bị đảo mức logic thì kết quả thu được sẽ không nằm trong bộ mã Biquinary.
Ví dụ: Mã Biquinary của số 4 là 0101000, nếu có 1 bit bất kỳ bị đảo mức, chẳng hạn bit thứ 2 thì từ mã thu được là 0101010 không thuộc bộ mã Biquinary.
6. Mã 1 trong 10
Mã này cũng là loại mã không có trọng số và có ưu điểm là có tính chất phát hiện sai vì chỉ có 1 bit trong bộ mã mang giá trị 1.
Tự bản thân mã có khả năng giao tiếp với đèn LED nhằm hiển thị chữ số thập phân.
7. Mã LED 7 đoạn
- Với LED Anode chung, để một đoạn LED nào sáng phải cung cấp điện áp thấp ra vị trí đoạn tương ứng
- Với LED Cathode chung, để một đoạn LED nào sáng phải cung cấp điện áp cao ra vị trí đoạn tương ứng.
- Một số loại mã LED 7 đoạn:
8. Số dấu chấm động
8.1. Định nghĩa
Trong thực tế, các giá trị mà các thiết bị số học tính toán là các đại lượng số thực, với dải số thập phân rất rộng. Do đó nhu cầu thiết yếu là phải có cách thức mô tả các đại lượng số thực dưới dạng bit nhị phân. Một cách được sử dụng là dùng dấu chấm động [floating point number].
Tổng quát: Một số thực X được biểu diễn theo kiểu số dấu chấm động như sau:
X = M × RE
- M là phần định trị [Mantissa]
- R là cơ số [Radix], nếu là hệ thập phân sẽ nhận giá trị 10
- E là phần mũ [Exponent].
Anode chung | Cathode chung | ||||||||||||||||||
Số | dp | g | f | e | d | c | b | a | Giá trị HEX | Số | dp | g | f | e | d | c | b | a | Giá trị HEX |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | C0H | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 3FH |
1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | F9H | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 06H |
2 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | A4H | 2 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 5BH |
3 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | B0H | 3 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 4FH |
4 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 99H | 4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 66H |
5 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 92H | 5 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 6DH |
6 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 82H | 6 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 7DH |
7 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | F8H | 7 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 07H |
8 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 80H | 8 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 7FH |
9 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 90H | 9 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 6FH |
A | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 88H | A | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 77H |
B | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 83H | B | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 7CH |
C | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | C6H | C | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 39H |
D | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | A1H | D | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 5EH |
E | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 86H | E | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 79H |
F | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 8EH | F | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 71H |
Ví dụ:
85.59 = 0.8559 × 102 = 8.559 × 101 = 855.9 × 10-1 =
Với cách định nghĩa như trên, rõ ràng một vấn đề phát sinh là sẽ có vô số cách xác định phần định trị và phần mũ tùy thuộc vào vị trí của dấu chấm thập phân [hoặc hệ cơ số bất kỳ], dấu chấm sẽ di động. Chính vì điều này dấu chấm động cần được chuẩn hóa cho một số bất kỳ.
8.2. Chuẩn IEEE 754/85
Chuẩn IEEE 754/85 được đưa ra nhằm chuẩn hóa các số thực dưới dạng dấu chấm động cho cơ số nhị phân, trong đó một số thập phân bất kỳ được biểu diễn dưới dạng:
X = +/-1.xxx × 2E
Độ chính xác của giá trị số thập phân X sẽ tăng lên nếu chuỗi nhị phân .xxx càng dài. Chuẩn IEEE 754/85 gồm 4 dạng:
- Dạng 32-bit
- Dạng 44-bit
- Dạng 64-bit
- Dạng 80-bit
Cấu trúc các dạng dấu chấm động theo chuẩn IEEE 754/85
Dạng 32 bit
S là bit dấu
- S = 0 Số dương
- S = 1 Số âm
- e [8 bit] là mã excess-127 [28-1-1]của phần mũ E:
e = E + 127 E = e 127
- Giá trị 127 được gọi là độ lệch [bias]
- m [23 bit] là phần lẻ của phần định trị M:
M = 1 × m
- Công thức xác định giá trị thập của số thực dưới dạng 32 bit:
X =[-1]S × 1.m × 2E = [-1]S × 1.m × 2e 127
Ví dụ 1: Xác định giá trị của số thực được biểu diễn bằng 32-bit như sau:
1100 0001 0101 0110 0000 0000 0000 0000
- S = 1 => Số âm
- e = 1000 00102 = 130 => E = 130 127 = 3
- Vậy: X = -1.10101100 × 23 = -1101.011 = -13.375
Ví dụ 2:Biểu diễn số thực X = 83.75 về dạng số dấu chấm động IEEE 754/85 32-bit
X = 83.75 = 1010011.112 = 1.01001111 x 26
Ta có:
- S = 0 vì đây là số dương
- E = e-127=6 => e = 127+6=13310 = 1000 01012
- Vậy: X = 0100 0010 1010 0111 1000 0000 0000 0000
Các quy ước cho các giá trị đặc biệt
- Các bit của e bằng 0, các bit của m bằng 0, thì X = ±0
x000 0000 0000 0000 0000 0000 0000 0000 X=±0
- Các bit của e bằng 1, các bit của m bằng 0, thì X = ±
x111 1111 1000 0000 0000 0000 0000 0000 X=±
- Các bit của e bằng 1, còn m có ít nhất 1 bit bằng 1
không biểu diễn cho số nào cả [NaN not a number].