Lý thuyết hệ thống số với các loại mã và phép chuyển đổi
I.MÃ SỐ
1.Mã BCD
Trực tiếp liên quan đến mạch số (bao gồm các hệ thống sử dụng số) là các số nhị phân nên mọi thông tin dữ liệu dù là số lượng, các chữ , các dấu, các mệnh lệnh sau cùng cũng phải ở dạng nhị phân thì mạch số mới hiểu ra và xử lý được. Do đó phải có quy định cách thức mà các số nhị phân được dùng để biểu thị các dữ liệu khác nhau, kết quả là có nhiều mã số (gọi tắt là mã) được dùng. Trước tiên mã số thập phân thông dụng nhất là mã BCD ( Binary Coded Decimal: mã số thập phân được mã hóa theo nhị phân ). Sự chuyển đổi thập phân sang BCD và ngược lại gọi là mã hoá và sự lặp mã.
1.1.Chuyển đổi thập phân sang BCD và ngược lại
Người ta biểu thị các số thập phân từ 0 đến 9 bởi số nhị phân 4 bit có giá trị như bảng dưới đây.
Chúng ta nên chú ý rằng: mã BCD phải được viết đủ 4 bit và sự tương ứng chỉ được áp dụng cho số thập phân từ 0 đến 9, nên số nhị phân từ 1010 (= 1010) đến 1111 (= 1510) của số nhị phân 4 bit không phải là mã BCD.
Khi chuyển đổi qua lại giữa thập phân và BCD ta làm như ví dụ minh họa sau đây:
Ví dụ 1: Ðổi 48910 sang mã BCD
Ví dụ 2: Đổi 53710 sang mã BCD
Ví dụ 3: Đổi 00110100100101012 (BCD) sang số thập phân
1.2.So sánh BCD và số nhị phân
Điều quan trọng là phải nhận ra rằng BCD không phải là hệ thống số như hệ thống số thập phân, nhị phân, bát phân và thập lục phân. Thật ra, BCD là hệ thập phân với từng ký số được mã hóa thành giá trị nhị phân tương đương. Cũng phải hiểu rằng một số BCD không phải là số nhị phân quy ước. Mã nhị phân quy ước biểu diễn số thập phân hoàn chỉnh ở dạng nhị phân; Còn mã BCD chỉ chuyển đổi từng ký số thập phân sang số 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 ký số (2 ký số trở lên. Điều này là do mã BCD không sử dụng tất cả các nhóm 4 bit có thể có, vì vậy có phần kém hiệu quả hơn.
Ưu điểm của mã BCD là dể dàng chuyển đổi từ thập phân sang nhị phân và ngược lại. Chỉ cần nhớ các nhóm mã 4 bit ứng với các ký số thập phân từ 0 đến 9.
Phối hợp các hệ thống số
Các hệ thống số đã trình bày có mối tương quan như bảng sau đây:
1.3.CỘNG BCD
Khi tổng nhỏ hơn hoặc bằng 9 thì ta thực hiện phép cộng BCD như cộng nhị phân bình thường.
Ví dụ: xét phép cộng 6 và 2, dùng mã BCD biểu diễn mối ký số
Một ví dụ khác, cộng 45 với 33
Tổng lớn hơn 9
Ta xét phép cộng 5 và 8 ở dạng BCD:
Tổng của phép cộng ở trên là 1101 không tồn tại trong mã BCD. Điều này xảy ra do tổng của hai ký số vượt quá 9. Trong trường hợp này ta phải hiệu chỉnh bằng cách cộng thêm 6 (0110) vào nhằm tính đến việc bỏ qua 6 nhóm mã không hợp lệ.
Ví dụ:
Một ví dụ khác:
2.Mã ASCII
Mã chữ số được sử dụng rộng rãi nhất hiện nay là mã ASCII (American Standard Code for Information Interchange). Mã ASCII là mã 7 bit, nên có 27 = 128 nhóm mã, đủ để biểu thị tất cả ký tự của một bàn phím chuẩn cũng như các chức năng điều khiển. Bảng dưới đây minh họa một phần danh sách mã ASCII.
Ký tự Mã ASCII 7 bit Bát phân Thập phân A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
1
2
3
4
5
6
7
8
9
<ký tự riêng>
.
(
+
$
*
)
_
/
,
=
<RETURN>
<LINEFEED>
100 0001`
100 0010
100 0011
100 0100
100 0101
100 0110
100 0111
100 1000
100 1001
100 1010
100 1011
100 1100
100 1101
100 1110
100 1111
101 0000
101 0001
101 0010
101 0011
101 0100
101 0101
101 0110
101 0111
101 1000
101 1001
101 1010
011 0000
011 0001
011 0010
011 0011
011 0100
011 0101
011 0110
011 0111
011 1000
011 1001
010 0000
010 1110
010 1000
010 1011
010 0100
010 1010
010 1001
010 1101
010 1111
010 1100
010 1101
000 1101
000 1010
101
102
103
104
105
106
107
110
111
112
113
114
115
116
117
120
121
122
123
124
125
126
127
130
131
132
060
061
062
063
064
065
066
067
070
071
040
056
050
053
044
052
051
055
057
054
075
015
012
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
50
51
52
53
54
55
56
57
58
59
5A
30
31
32
33
34
35
36
37
30
39
20
2E
28
2B
24
2A
29
2D
2F
2C
2D
0D
0A
3.MÃ THỪA 3 (Excess – 3 code)
Bảng dưới đây cho biết mã số thừa 3 ứng với số thập phân từ 0 đến 9. Để chuyển đổi số thập phân sang mã thứa 3 trước tiên ta thêm 3 vào số thập phân đó rồi chuyển sang nhị phân bình thường.
Ví dụ:
- 210 g 2 + 3 = 510 = 0101
- 510 g 5 + 3 = 810 = 1000
Do cách viết số thập phân ra mã thừa 3 tương tự như cách viết số thập phân ra mã BCD đã nói ở trước, nên người ta có thể hiểu mã thừa 3 là một dạng của mã BCD. Để dể phân biệt mã BCD đã nói đến ở phần trước được gọi là mã BCD 8421.
4.MÃ GRAY
Bảng dưới đây trình bày mã số Gray cùng với mã số nhị phân và thập phân từ 0 đến 15. Mã Gray được chọn sao cho chỉ thay đổi một vị trí bit giữa hai mã kế nhau.
5.THÊM BIT CHẴN LẺ ĐỂ PHÁT HIỆN SAI
Tín hiệu biểu thị số nhị phân truyền từ mạch này sang mạch khác, và nhất là truyền đi xa bị méo dạng và nhiễm nhiễu khiến số nhị phân nhận được có thể sai so với số cần truyền. Để khắc phục hiện tượng này người ta thêm vào mã ASCII 7 bit một bit chẳn lẻ (Parity bit) ở vị trí có nghĩa cao nhất (bên trái) để có dữ liệu 8 bit (1 bit chẵn lẻ, 7 bit dữ liệu gốc). Ở cách dùng lẻ (Odd parity) thì bit parity thay đổi để làm cho tổng số bít 1 trong byte là lẻ. Ví dụ:
Ở cách dùng chẵn (Even parity) thì bit parity thay đổi để cho tổng số bit 1 trong byte là chẵn. Ví dụ:
Bằng các thuật toán, các mạch số sẽ đếm tổng số bit cùng loại trong byte nhận được để xử lý, nếu dữ liệu xử lý không khớp với qui ước về bit chẵn lẻ, số đó sẽ được mạch nhận biết là số bị sai.
II.CHUYỂN ĐỔI GIỮA CÁC HỆ THỐNG SỐ
2.1.ĐỔI TỪ NHỊ PHÂN SANG THẬP PHÂN
Mỗi ký số nhị phân (bit) có một trọng số dựa trên vị trí của nó. Bất kỳ số nhị phân nào cũng đều có thể đổi thành số thập phân tương đương bằng cách cộng các trọng số tại những vị trí có bit 1.
Để hiểu rõ hơn ta xét một vài ví dụ sau đây:
2.2.ĐỔI 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 đương.
* Phương pháp thứ nhất là cách đi ngược lại quá trình đổi nhị phân sang thập phân, đó là : số thập phân được trình bày dưới dạng tổng các lũy thừa của 2, sau đó ghi các kí số 0 và 1 vào vị trí bit tương ứng.
* Cách thứ hai giúp chuyển đổi từ số thập phân nguyên sang nhị phân là dùng phương pháp lặp lại phép chia cho 2. Ví dụ, với một số thập phân 27 ta thực hiện phép chia số này cho 2 và ghi lại số dư sau mỗi lần chia cho đến khi thu được thương số bằng 0, và kết quả nhị phân hình thành bằng cách viết số dư đầu tiên là LSB và số dư cuối cùng là MSB.
Quá trình chuyển đổi bằng phương pháp này được minh họa bằng lưu đồ sau đây:
Lưu đồ trên biểu diển phương pháp lặp lại phép chia để chuyển đổi số nguyên thập phân sang nhị phân. Phương pháp này cũng được sử dụng để chuyển đổi số nguyên thập phân sang bất ký hệ thống số nào khác.
2.3.ĐỔI TỪ BÁT PHÂN SANG THẬP PHÂN
Ta dể dàng đổi số bát phân sang thập phân tương đương bằng cách nhân từng ký số bát phân với trọng số của nó, rồi cộng kết quả với nhau.
Ví dụ 7: Đổi số bát phân 4708 thành số thập phân
4758 = 4x(82) + 7x(81) + 5x(80)
= 4×64 + 7×8 + 5×1
= 31710
Ví dụ 8: Đổi số bát phân 34.6 thành số thập phân
34.68 = 3x(81) + 4x(80) + 6x(8-1)
= 24 + 4 + 0.75
= 28.7510
2.4.ĐỔI TỪ THẬP PHÂN SANG BÁT PHÂN
Có thể dùng phương pháp lặp lại phép chia để đổi một số nguyên thập phân sang bát phân tương đương, với số chia là 8.
Ví dụ 9: Đổi số thập phân 36510 thành số bát phân tương đương
Chú ý một điều là: số dư đầu tiên là số có giá trị nhỏ nhất (LSB) của số bát phân, số dư cuối cùng là số có giá trị lớn nhất (MSB) của số bát phân.
2.5.ĐỔI TỪ BÁT PHÂN SANG NHỊ PHÂN
Phép đổi từ bát phân sang nhị phân đuợc thực hiện bằng cách đổi từng ký số bát phân sang số nhị phân 3 bit tương đương. Tám ký số bát phân được đổi như bảng sau đây:
Ví dụ 10:
Đổi số 3468 sang nhị phân
→Như vậy số bát phân 3468 tương đương với số nhị phân 0111001102
Đổi số 324710 sang nhị phân
→Như vậy số bát phân 32478 tương đương với số nhị phân: 0110101001112
2.6.ĐỔI TỪ NHỊ PHÂN SANG BÁT PHÂN
Đổi từ số nguyên nhị phân sang bát phân được thực hiêïn ngược lại với quá trình đổi từ bát phân sang nhị phân. Các bit của số nhị phân được nhóm thành từng nhóm 3 bit, bắt đầu từ LSB. Sau đó mỗi nhóm được đổi sang số bát phân tương đương.
Ví dụ 11: đổi số nhị phân 1001101102 thành số bát phân
Như vậy số nhị phân 1001101102 tương đương với số bát phân 4668
khi không đủ 3 bit cho nhóm còn lại, trường hợp này ta sẽ thêm một hoặc hai bit 0 vào bên trái MSB của số nhị phân để đủ cho nhóm sau cùng.
Ví dụ 14: đổi số 110111012 thành số bát phân
Cách đếm trong hệ bát phân: trong hệ bát phân ký số lớn nhất là 7 vì vậy trong cách đếm bát phân, vị trí ký số tăng từ 0 đến 7, tiếp đó ta lặp lại từ 0 cho đến vòng kế tiếp và tăng vị trí ký số lên 1.
Như vậy với N vị trí số bát phân thì ta có thể đếm từ 0 đến 8N – 1, tổng cộng có 8N số đếm khác nhau. Ví dụ: với 4 vị trí ký số bát phân ta có thể đếm từ 00008 đến 77778.
2.7.ĐỔI TỪ THẬP LỤC PHÂN SANG THẬP PHÂN
Một số thập lục phân có thể được đổi thành số thập phân tương đương dựa vào dữ liệu mỗi vị trí ký số thập lục phân có trọng số là lũy thừa 16. LSD có trọng số là 160, ký số thập lục phân ở vị trí tiếp theo có số mũ tăng lên. Quá trình chuyển đổi như sau:
Ví dụ ta đổi một số thập lục phân 45616 sang số thập phân tương đương ta làm như sau:
45616 = 4×162 + 5×161 + 6×160
= 4×256 + 5×16 + 6×1
= 1024 + 80 + 6
= 111010
Một ví dụ khác đổi số thập lục phân 4BE16 thành số thập phân tương đương
4BE16 = 4×162 + 11×161 + 14×160
= 1024 + 176 + 14
= 121410
Chú ý, trong ví dụ thứ 2 thay 11 vào B và 14 vào E khi đổi sang thập phân.
Theo cách chuyển đổi như 2 ví dụ trên thì ta có thể đổi bất kỳ một số thập lục phân sang thập phân tương đương.
2.8.ĐỔI TỪ THẬP PHÂN SANG THẬP LỤC PHÂN
Tương tự như cách đổi từ thập phân sang nhị phân hay bát thân, khi đổi từ thập phân sang thập lục phân ta cũng dùng cách lặp lại phép chia cho 16 và lấy số dư như trước.
Ví dụ 15: đổi số 76510 thành số thập lục phân.
Ta thực hiện phép chia, ta được:
Ví dụ 16: Đổi 72410 thành số thập lục phân
Chúng ta nên nhớ rằng bất kỳ một số dư nào trong phép chia lớn hơn 9 đều được biểu diễn bởi các chữ từ A đến F khi đổi sang số thập lục phân.
2.9.ĐỔI TỪ THẬP LỤC PHÂN SANG NHỊ PHÂN
Cách đổi từ số thập lục phân sang số nhị phân cũng giống như đổi từ bát phân sang nhị phân, nghĩa là mỗi ký số thập lục phân được đổi sang giá trị nhị phân 4 bit tương đương.
Ví dụ 17: Đổi số 8D216
2.10.ĐỔI TỪ NHỊ PHÂN SANG THẬP LỤC PHÂN
Để đổi từ số nhị phân sang thập lục phân ta làm ngược lại cách đổi từ thập lục phân sang nhị phân. Nghĩa là ta nhóm thành từng nhóm 4 bit, mỗi nhóm được đổi sang ký số thập lục phân tương đương. Số 0 có thể được thêm vào để hoàn chỉnh 4 bit cuối cùng.
Ví dụ 18 : Đổi số 110011011012 thành số thập lục phân
Ví dụ 19 : Đổi số 10101001112 thành số thập lục phân
TÓM TẮT CÁC PHÉP CHUYỂN ĐỔI GIỮA CÁC HỆ THỐNG SỐ:
- Khi thực hiện phép biến đổi từ hệ nhị phân (hoặc bát phân hay thập lục phân), ta lấy tổng trọng số của từng vị trí ký số.
- Khi đổi từ hệ thập phân sang hệ nhị phân (bát phân hay thập lục phân), ta áp dụng phương pháp lặp lại phép chia cho 2 (8 hay 16) và kết hợp các số dư.
- Khi đổi từ số nhị phân sang bát phân (hay thập lục phân), ta nhóm các bit thành từng nhóm 3 (hoặc 4) bit và đổi từng nhóm này sang ký số bát phân (hay thập lục phân) tương đương.
- Khi đổi từ số bát phân (hay thập lục phân) sang nhị phân, ta đổi mỗi ký tự thành số nhị phân 3 (hoặc 4) bit tương đương.
- Khi đổi từ số bát phân sang thập lục phân (hay ngược lại), ta đổi sang nhị phân trước, sau đó đổi sang hệ thống số mong muốn.
III.TÍNH TOÁN VỚI HỆ THỐNG SỐ
3.1.CỘNG SỐ HEX (THẬP LỤC PHÂN)
Phép cộng số hex được thực hiện giống như cộng thập phân. Sau đây là cách thức để cộng số hex:
Cộng hai ký số hex trong hệ thập phân, tính nhẫm giá trị thập phân tương đương cho những ký số lớn hơn 9
Nếu tổng nhỏ hơn hoặc bằng 15, có thể biểu diễn trực tiếp ở dạng ký số hex
Nếu tổng lớn hơn hoặc bằng 16, trừ 16 và nhớ 1 đến vị trí ký số kế tiếp.
Sau đây là một số ví dụ cộng các số hex minh họa
Ở ví dụ 1 ta cộng các LSD (7 và 4) cho ra 11, là B ở hệ hex. Không có số nhớ, cộng 5 và 3 cho ra 8.
Ở ví dụ 2 ta bắt đầu cộng 8 và A, tính nhẫm A ra giá trị thập phân là 10 . Do đó tổng là 18, số này lớn hơn 16 nên ta trừ cho 16 được 2, viết số 2 và nhớ 1 sang vị trí kế tiếp. Cộng số nhớ cho 4 và 3 ta được tổng là 8.
Ở ví dụ 3 tổng của C và D xem như 12 + 13 = 2510, số này lớn hơn 16 nên ta trừ cho 16 còn 9, và nhớ 1 sang vị trí kế tiếp. Cộng số nhớ này với B và 3 ta được 1510 đổi sang số hex là F , nhớ 1 sang vị trí kế tiếp. Cộng số nhớ này với 4 và 4 ta được 9, và kết quả cuối cùng là 9F9.
3.2.CỘNG NHỊ PHÂN
Phép cộng hai số nhị phân được tiến hành giống như cộng số thập phân. Các bước của phép cộng nhị phân được áp dụng cho số nhị phân. Tuy nhiên, chỉ có bốn trường hợp có thể xảy ra trong phép cộng hai số nhị phân (bit) tại vị trí bất kỳ. Đó là:
Dưới đây là một vài ví dụ về cộng hai số nhị phân (số thập phân tương đương trong dấu ngoặc):
Phép cộng là phép toán số học quan trọng nhất trong hệ thống kỹ thuật số. Như ta sẽ thấy, các phép trừ, nhân và chia được thực hiện ở hầu hết máy vi tính và máy tính bấm tay hiện đại nhất thực ra chỉ dùng phép cộng làm phép toán cơ bản của chúng.
3.3.TRỪ NHỊ PHÂN
Trong phép trừ nếu số trừ nhỏ hơn số trừ, cụ thể là khi 0 trừ 1, thì phải mượn 1 ở hàng cao kế và là 2 ở ở hàng đang trừ và số mượn này phải trả lại cho hàng cao kế tương tự như phép trừ của hai số thập phân.
Ví dụ 1: trường hợp trừ hai số nhị phân 1 bit
Ví dụ 2: Trừ hai số nhị phân nhiều bit
4.4 BIỂU DIỄN CÁC SỐ CÓ DẤU
Do đa số máy tính xử lý cả số âm lẫn số dương nên cần có dấu hiệu nào đó để biểu thị dấu của số ( + hay – ). Thường thì người ta thêm vào một bit phụ gọi là bit dấu. Thông thường chấp nhận bit 0 là bit dấu biểu thị số dương, bit 1 là bit dấu biểu thị số âm.
Dạng bù 1
Để có bù 1 của số nhị phân, ta thay mỗi bit 0 thành bit 1 và mỗi bit 1 thành bit 0. Nói cách khác, ta thay đỗi mỗi bit trong số nhị phân đã cho thành bit bù (đảo) tương ứng.
Ví dụ :
Dạng bù 2
Bù 2 của một số nhị phân được hình thành bằng cách lấy bù 1 của số và cộng 1 vào vị trí nhỏ nhất.
Ví dụ 3: Tìm dạng bù 2 của số 1101012 = 5310
Ví dụ 4:
Biểu diễn số có dấu bằng bù 2
Bù 2 biểu diễn những số có dấu theo cách sau đây:
Nếu là số dương, thì trị tuyệt đối được biểu diễn theo dạng nhị phân thực sự của nó, và bit dấu là 0 được đặt vào trước MSB.
Nếu là số âm, trị tuyệt đối được biểu diễn ở dạng bù 2, và bit dấu là 1 được đặt trước MSB.
Ví dụ minh họa:
Các phép tính trong bù 2 tương tự như phép tính số nhị phân bình thường.
4.5.NHÂN NHỊ PHÂN
Phép nhân số nhị phân được thực hiện tương tự như nhân số thập phân. Quá trình thật ra đơn giản hơn vì ký số của số nhân chỉ là 0 và 1, vì vậy ta chỉ nhân cho 0 hay 1.
Ví dụ:
4.6.CHIA SỐ NHỊ PHÂN
Phép chia một số nhị phân (số bị chia) cho một số khác (số chia) được thực hiện giống như phép chia số thập phân. Tiến trình thức tế còn đơn giản hơn do khi kiểm tra xem có bao nhiêu lần số chia “ đi vào” số bị chia, chỉ có hai khả năng đó là 0 và 1. Quá trình chia được minh họa bằng ví dụ sau:
Trong ví dụ đầu tiên ta có 10012 chia cho 112, tương đương 910 chia cho 310
Thương số là 00112 = 310. Trong ví dụ thứ 2, 10102 chia cho 1002 tức là 1010 chia cho 410 kết quả là 0010.12= 2.510
Phép chia số có dấu được thực hiện như phép nhân. Số âm được biến thành số dương bằng phép bù, sau đó mới thực hiện phép chia. Nếu số bị chia và số chia có dấu ngược nhau, thương số đổi sang số âm bằng cách lấy bù 2 nó và gán bit dấu là 1. Nếu số bị chia và số chia cùng dấu, thương số sẽ là số dương và được gán bit dấu là 0.