You are on page 1of 12

HỆ ĐẾM VÀ MÃ

1.1. CÁC HỆ ĐẾM


Chúng ta đã quen thuộc với một hệ thống số đếm mà trong đó một tập hợp có thứ
tự của 10 kí hiệu từ 0 đến 9, gọi là các chữ số, chúng được sử dụng để biểu diễn một
số bất kỳ. Hệ thống này được gọi là hệ thập phân. Cơ số của hệ thống số đếm này là
10. Bất kỳ số nào trong hệ đếm thập phân cũng được biểu diễn bởi một tập hợp các
chữ số này.
Ngoài hệ thập phân ra, ta cũng có thể có những hệ thống số khác. Một vài hệ
thống số thường được sử dụng là: hệ đếm nhị phân (binary), hệ đếm bát phân (hệ đếm
cơ số 8 - octal) và hệ đếm thập lục phân (hệ đếm cơ số 16 - Hexadecimal). Những hệ
thống đếm này rất hữu dụng trong các hệ thống số.
Nói chung trong bất kỳ hệ thống số đếm nào, một tập hợp có thứ tự các kí hiệu -
gọi là chữ số - cùng với các luật được định nghĩa dùng để thực hiện các phép toán như
cộng, nhân... Tập hợp các chữ số này tạo ra một số gồm hai phần - nguyên và phân -
ngăn cách bởi dấu phẩy cơ số.
(N)b = dn-1dn-2...d1d0,d-1d-2...d-m
Trong đó: N: một số
b : cơ số của hệ thống số đếm
n: số chữ số trong phần nguyên
m: số chữ số trong phần phân
dn-1 : chữ số có nghĩa nhất
d-m : chữ số ít nghĩa nhất
0 < di < b-1 với i = -m  n-1
Các chữ số trong một số được đặt cạnh nhau và mỗi vị trí trong số đó được gán
một trọng lượng hay chỉ số của sự quan trọng bằng vài luật xác định trước.
1.1.1. Hệ đếm nhị phân
Hệ thống đếm với cơ số 2 được gọi là hệ đếm nhị phân.
Trong hệ thống đếm này hai ký hiệu 0 và 1 được sử dụng để biểu diễn các con số.
Mỗi vị trí của chúng trong số được gọi là một bít. Đây là hệ thống số đếm vị trí, nghĩa
là tất cả các vị trí được gán một trọng lượng xác định.
Ví dụ: Một số nhị phân:
1011,101
Chuyển sang số thập phân

3
1.23 + 0.22 + 1.21 + 1.20 + 1.2-1 + 0.2-2 + 1.2-3
= 8 + 0 + 2 + 1 + 1/2 + 0 + 1/8
= (11,625)10
Để chuyển đổi từ số thập phân sang số nhị phân ta thực hiện bằng các phép chia
cho hai liên tiếp đồng thời giữ lại các số dư (đối với phần nguyên).
Ví dụ: Chuyển số (12)10 sang hệ đếm nhị phân
12/2 6 0
6/2 3 0
3/2 1 1
1/2 0 1
(12)10 = (1100)2
Đối với phần phân (phần lẻ): Thực hiện chuyển đổi theo nguyên tắc nhân 2 trừ 1.
Đặt số thập phân ở tận cùng bên trái, nhân số hệ thập phân này với 2, nếu tích lớn hơn
1 thì lấy tích số trừ đi 1 đồng thời đặt 1 xuống hàng dưới (hàng này là số nhị phân cần
tìm), nếu tích số nhỏ hơn 1 thì đặt 0 xuống hàng dưới rồi chuyển tích số này sang cột
sau và tiếp tục nhân với 2 cho đến khi hiệu số trừ 1 bằng 0 thì đạt được số nhị phân
cần tìm.
Ví dụ: Chuyển số (0,8125)10 sang hệ nhị phân
0,08125  2 = 1,625 - 1 = 0,625 1
0,625  2 = 1,25 - 1 = 0,25 1
0,25  2 = 0,5 0
0,5  2 = 1-1=0 1
Số hệ hai thu được là: 0, 1101
1.1.2. Hệ đếm bát phân
Hệ thống đếm với cơ số 8 được gọi là hệ đếm bát phân.
Trong hệ thống đếm này tám kí hiệu 0, 1, 2, 3, 4, 5, 6, 7 được sử dụng để biểu
diễn các số, đây cũng là hệ đếm phụ thuộc vị trí.
Ví dụ: Một số bát phân
(273)8 = 2.82 + 7.81 + 3.80
= 128 + 56 + 3
= (187)10
Để chuyển đổi từ số thập phân sang số bát phân ta thực hiện bằng các phép chia
cho 8 liên tiếp đồng thời giữ lại các số dư (đối với phần nguyên).

4
Ví dụ: Chuyển số (1054)10 sang cơ số tám
1054/8 131 6
131/8 16 3
16/8 2 0
2/8 0 2
(1054)10 = (2036)8
Hệ đếm bát phân được sử dụng nhiều trong máy tính và máy vi tính để nhập dữ
liệu. Mỗi chữ số cơ số 8 là một tổ hợp của 3 chữ số nhị phân. Bởi vậy, tập các số nhị
phân 3 bít có thể biểu diễn bằng các chữ cơ số 8, rất thuận tiện cho nhập liệu trong
máy tính.
Ví dụ: Chuyển đổi cơ số 8 sang nhị phân
(736)8 = (111 011 110)2
Chuyển số nhị phân sang số bát phân bằng cách gộp các nhóm 3 bít bắt đầu từ bít
ít ý nghĩa nhất và chuyển dần về phía bít nhiều ý nghĩa nhất (đối với phần nguyên).
(1001101110)2 = 001 001 101 110 = (1156)8
1.1.3. Hệ đếm thập lục phân
Cơ số của hệ đếm thập lục phân là 16, do đó cần có 16 kí hiệu phân biệt để dễ
biểu diễn các số. Đó là các kí hiệu từ 0  9 và các chữ cái từ A  F. Vì các số và các
chữ cái đều được dùng đến cho việc biểu diễn các số trong hệ đếm thập lục phân nên
đây còn được gọi là hệ đếm kí tự.
Ví dụ: Chuyển đổi số thập lục phân sang thập phân và ngược lại:
(3A)16 = 3.161 + 10.160 = (58)10
(675)10 = (?)16
675/16 42 3
42/16 2 10
2/16 0 2
(675)10 = (2A3)16
Hệ đếm thập lục phân rất thông dụng trong máy tính. Có 16 tổ hợp của số nhị
phân 4 bít và tập hợp các số nhị phân 4 bít có thể nhập vào máy tính dưới dạng các
chữ số thập lục phân. Số thập lục phân được biến đổi thành dạng nhị phân trước khi
chúng được xử lý bởi các mạch số.
Ví dụ: Chuyển từ số thập lục phân sang số nhị phân và ngược lại
(2F3B)16 = (0010 1111 0011 1011)2

5
(1101100010101101)2 = (D8AD)16
Chú ý: Đôi khi trong phép chuyển đổi ta phải thêm vào các số 0 bên phải và bên
trái để được nhóm đủ 4 bit.
Các luật cho các phép toán số học với số thập lục phân, số bát phân cũng tương
tự với số nhị phân và số thập phân. Thông tin chỉ có thể được thao tác dưới dạng nhị
phân trong một mạch số nhưng nó sẽ dễ dàng hơn nếu nhập thông tin bằng số thập lục
phân. Vì các phép toán số học được thực hiện bởi các mạch số dưới dạng nhị phân nên
số hexa nhập vào trước hết phải chuyển sang dạng nhị phân.
Các hệ thống đếm thường sử dụng trong kỹ thuật số được minh hoạ trong bảng
1.1.
Bảng 1.1. Các hệ thống đếm thường sử dụng

Cơ số 10 Cơ số 2 Cơ số 8 Cơ số 16
0 00000 0 0
1 00001 1 1
2 00010 2 2
3 00011 3 3
4 00100 4 4
5 00101 5 5
6 00110 6 6
7 00111 7 7
8 01000 10 8
9 01001 11 9
10 01010 12 A
11 01011 12 B
12 01100 14 C
13 01101 15 D
14 01110 16 E
15 01111 17 F
16 10000 20 10
17 10001 21 11
18 ... … …
(9)10 = (1001)2 = (11)8 = (9)16
(13)10 = (1101)2 = (15)8 = (D)16

6
(18)10 = (10010)2 = (22)8 = (12)16
1.1.4. Chuyển đổi tổng quát giữa các hệ thống đếm
1.1.4.1. Chuyển đổi phần nguyên
Phần nguyên của số N bất kỳ được biểu diễn như sau:
(N)b = dn-1dn-2... d1d0
= dn-1.bn-1 + 1dn-2.bn-2 + ... + d1.b1 + d0 (1)
Với: b là cơ số của hệ đếm
di là các chữ số của hệ đếm (nguyên, dương hoặc bằng 0)
Chuyển số N sang hệ đếm với cơ số s
(N)s = d*n-1d*n-2... d*1d*0
= d*n-1.sn-1 + d*n-2.sn-2 + . . . + d*1.s1 + d*0 (2)
Với: s là cơ số của hệ đếm mới;
d i * là các chữ số của hệ đếm mới.
Cần phải tìm d i *
Lấy biểu thức (2) chia cho s:
N d*0
= d*n-1.sn-2 + d*n-2.sn-3 + . . . . + d*1 + (3)
s s
Biểu thức (3) chia làm hai phần, nguyên và phân, tìm được d*0
Tiếp tục chia cho cơ số s tìm được các giá trị của d*i
Quy tắc chuyển đổi: Muốn chuyển phần nguyên của số N từ hệ đếm cơ số b
sang hệ đếm cơ số s, ta lần lượt lấy số đó và các phần nguyên nhận được chia cho cơ
số s. Các số dư nhận được lần lượt là các chữ số của N ở hệ đếm cơ số s, số dư nhận
được đầu tiên (d*0) là chữ số có trọng số thấp nhất.
1.1.4.2. Chuyển đổi phần phân
Phần phân của số N bất kỳ được biểu diễn như sau:
(N)b = d-1d-2... d-l
= d-1.b-1 + d-2.b-2 + . . . + d-l.b-l (4)
Với: b là cơ số của hệ đếm;
di là các chữ số của hệ đếm (nguyên, dương hoặc bằng 0).
Chuyển số N sang hệ đếm với cơ số s:
(N)s = d*-1d*-2... d*-l
= d*-1.s-1 + d*-2.s-2 + . . . + d*-l.s-l (5)

7
Với s là cơ số của hệ đếm mới;
d*i là các chữ số của hệ đếm mới.
Cần phải tìm d*i
Lấy biểu thức (5) nhân với s
N.s = d*-1 + d*-2.s-1 + . . . (6)
Biểu thức (6) chia làm hai phần, nguyên và phân, tìm được d*-1
Tiếp tục nhân với cơ số s tìm được các giá trị của d*i
Quy tắc chuyển đổi: Muốn chuyển phần phân của số N từ hệ đếm cơ số b sang
hệ đếm cơ số s, ta lần lượt lấy số đó và các phần phân nhận được nhân với cơ số s. Các
phần nguyên nhận được lần lượt là các chữ số của N ở hệ đếm cơ số s, phần nguyên
nhận được đầu tiên (d*-1) là chữ số có trọng số lớn nhất.
1.1.4.3. Các trường hợp đặc biệt
Quan hệ giữa b và s là luỹ thừa nguyên lần của nhau
- b = 8, s = 2 (8 = 23)
Thay thế một chữ số hệ 8 bằng một nhóm 3 chữ số hệ 2 tương ứng.
- b = 16, s = 2 (16 = 24)
Thay thế một chữ số hệ 16 bằng một nhóm 4 chữ số hệ 2 tương ứng.
- b = 2, s = 8
Thay thế một nhóm 3 chữ số hệ 2 bằng một chữ số hệ 8 tương ứng.
- b = 2, s = 16
Thay thế một nhóm 4 chữ số hệ 2 bằng một chữ số hệ 16 tương ứng.
1.1.5. Các phép tính số học trong hệ nhị phân
Xét các phép tính số học trong hệ nhị phân được thực hiện trên giấy, còn việc
tính toán thực hiện nhờ các mạch điện tử sẽ được đề cập ở các chương sau.
1.1.5.1. Phép cộng nhị phân
Phép cộng hai số nhị phân 1 bit được thực hiện như sau:
0+0=0
0+1=1
1+0=1
1 + 1 = 10

8
Tổng của hai số 1 trong hệ đếm 2 là 10, nghĩa là có xuất hiện “nhớ”, tương tự như
phép cộng hai số trong hệ thập phân, số nhớ sẽ được chuyển lên hàng trên và cộng với
con số của hàng trên đó.
Xét phép cộng hai số nhị phân nhiều bít sử dụng nguyên tắc trên và quan tâm đến
số “nhớ”.
Số hạng thứ nhất 1101 (13)10
Số hạng thứ hai 1111 (15)10
Tổng chưa có nhớ 0010
Các số nhớ 1111
Tổng cuối cùng 11100 (28)10
Quá trình thực hiện cộng hai số nhị phân trên được tóm tắt như sau:
- Ghi kết quả cộng không nhớ ở bên dưới hai số hạng cần cộng.
- Ở dòng tiếp theo ghi các số nhớ (đã được chuyển lên hàng trên).
- Cộng hai hàng trên (tổng không nhớ và số nhớ) với nhau theo đúng thứ tự
của các chữ số trên từng hàng sẽ có kết quả cuối cùng.
1.1.5.2. Phép trừ nhị phân
Phép trừ hai số nhị phân một bít được thực hiện như sau:
0-0=0
1-0=1
0-1=1 phải mượn 1 (10 - 1 = 1)
1-1=0
Khi trừ hai số nhị phân nhiều bít, nếu có trường hợp số 0 trừ cho số 1 thì phải
mượn 1 ở cột có trọng số lớn hơn, và thực hiện phép trừ giống như trừ các số trong hệ
đếm thập phân.
1.1.5.3. Phép nhân nhị phân
Phép nhân hai số nhị phân 1 bit được thực hiện như sau:
00=0
10=0
01=0
11=1
Thực hiện nhân hai số nhị phân nhiều bit, tương tự như phép nhân hai số trong hệ
thập phân.

9
1.1.5.4. Phép chia nhị phân
Phép chia hai số nhị phân một bít được thực hiện như sau:
0:1=0
1:1=1
Tương tự như phép chia hai số trong hệ thập phân, có hai trường hợp:
- Số bị chia lớn hơn số chia
Phép chia được thực hiện bắt đầu từ phần trái của số bị chia. Lấy một nhóm tối
thiểu các hàng của số bị chia bằng hoặc lớn hơn một hàng so với số chia. Nếu phép
chia nhóm này thực hiện được thì thương số là 1, ngược lại thương số là 0.
Khi đã chia đến chữ số cuối cùng của số bị chia mà phép chia vẫn chưa kết thúc
thì ta lấy thêm phần lẻ (nếu cần) bằng cách đặt dấu phẩy vào sau thương số và thêm số
0 vào sau số dư để tiếp tục chia tiếp.
- Số bị chia nhỏ hơn số chia
Đặt thương số ở giá trị 0, đồng thời thêm vào số bị chia một số 0, nếu số bị chia
vẫn chưa đủ lớn thì tiếp tục thêm vào thương số đó một số 0 (ở sau dấu phẩy) và ở số
bị chia cũng thêm một số 0, tiếp tục cho đến khi số bị chia lớn hơn hoặc bằng số chia
(có kết quả là 1 ở thương số). Phép chia này được tiếp tục theo trình tự trên cho đến
khi thương số có số chữ số lẻ theo yêu cầu.
1.2. MÃ
Máy tính và các mạch số được dùng để thao tác dữ liệu có thể là số, chữ cái hay
các kí tự đặc biệt. Vì các mạch số làm việc với dạng nhị phân nên các số, các chữ cái
và các kí tự đặc biệt khác phải được đưa về khuôn dạng nhị phân, có nhiều cách để
làm việc này và quá trình này gọi là mã hoá.
- Mã nhị phân: Là mã có trọng số, các số thập phân được biến đổi sang dạng nhị
phân tương đương của nó, với n bít thì sẽ có 2n từ mã.
- Mã BCD (Binary Coded Decimal): Là mã có trọng số, trong đó các chữ số thập
phân từ 0 tới 9 được biểu diễn bởi dạng nhị phân tương đương của nó, sử dụng 4
bit.
Chú ý : Một mã BCD phải viết đủ 4 bít.
Sự tương ứng chỉ áp dụng cho số thập phân từ 0 đến 9.
+ Mã BCD 8421 (Mã BCD có trọng số tự nhiên hay mã BCD thường - NBCD):
Mỗi 1 bít đại diện cho một trị số cố định. Nếu cộng tất cả trị số của các bít đại diện
trong từ mã thì được trị số tương ứng của số thập phân mà từ mã đó biểu diễn. Mã này
thuận tiện và hữu ích cho các phép vào ra trong các mạch số.

10
A = a3.23 + a2.22 + a1 .21 + a0 .20
= 8a3 + 4.a2 +2 a1 + 1a0
(8421)
+ Trong thực tế kỹ thuật, người ta sử dụng các mã BCD với trọng số khác như :
7421, 5421, 2421. Các loại mã BCD được minh họa trong bảng 1.2.
Chú ý: Ở bảng này mã 8421 là duy nhất, còn các mã 7421, 5421, 2421 là không
duy nhất.
Ví dụ: Ứng với số 3 của hệ 10 có thể biểu diễn là 0011 hoặc 1001 khi sử dụng mã
2421, nhưng với mã 8421 chỉ có một cách biểu diễn duy nhất là 0011.
- Mã dư 3 (excess - 3): Được tạo ra bằng cách cộng thêm 3 vào mã nhị phân tương
ứng (hay dịch mã nhị phân đi 3 hàng). Mã dư 3 là mã không có trọng số nó có đặc
tính tự bù nên được dùng trong các phép toán số học, với n bít thì sẽ có 2n từ mã.
- Mã Gray: Là mã không có trọng số không có đặc tính tự bù nên không được dùng
trong các phép toán số học. Mã Gray được chọn sao cho chỉ thay đổi 1 vị trí bít
giữa hai từ mã cạnh nhau, với n bít thì sẽ có 2n từ mã.
- Mã dư 3 Gray: Được tạo ra bằng cách dịch mã Gray đi 3 hàng, có đặc điểm giống
mã Gray, với n bít thì sẽ có 2n từ mã.
- Mã Johnson: Được xây dựng theo nguyên tắc : Mã có n bít thì sẽ có 2n từ mã. Mã
có đặc điểm là khi chuyển sang số tiếp theo mã sẽ thay chữ số 0 bằng chữ số 1 bắt
đầu từ phải sang trái, cho đến khi đạt đến tổ hợp 11....1 thì bắt đầu thực hiện thay
thế dần chữ số 1 bằng chữ số 0 cũng theo chiều từ phải sang trái. Để biểu thị các số
thập phân từ 0 đến 9 bằng mã Johnson, sử dụng mã Johnson 5 bit.
Bảng 1.2. Các loại mã BCD

Mã BCD
Số hệ 10
8421 7421 5421 2421
0 0000 0000 0000 0000
1 0001 0001 0001 0001
2 0010 0010 0010 0010
3 0011 0011 0011 0011
4 0100 0100 0100 0100
5 0101 0101 1000 1011
6 0110 0110 1001 1100
7 0111 1000 1010 1101
8 1000 1001 1011 1110
9 1001 1010 1100 1111

11
- Mã thập phân : Sử dụng từ mã 10 bit để biểu diễn các số trong hệ thập phân, mỗi
một từ mã chỉ có một bít duy nhất bằng 1.
- Mã 7 vạch: Dùng từ mã có độ dài 7 bit để biểu diễn một chữ số thập phân.
- Các loại mã kí tự
+ Mã ASCII (American Standard Code for Information Interchange - Mã trao đổi
thông tin của hội tiêu chuẩn Mỹ): Dùng 7 bít để mã hoá 128 kí tự, chữ số.
+ Mã ASCII mở rộng : Dùng 8 bit để mã hoá các kí tự, chữ số.
+ Mã EBCDIC (Extended Binary Coded Decimal Interchange Code - Mã trao đổi
thông tin BCD mở rộng) dùng 8 bit mã hoá cho một kí tự.
- Mã sửa sai: Trong mã sửa sai ngoài các bit mang thông tin còn có một số bit thêm
vào để phát hiện và sửa sai. Mã sửa sai đơn giản nhất là mã chẵn lẻ.
* Các loại mã số thường sử dụng được minh hoạ trong bảng 1.3.

12
Bảng 1.3. Một số mã thường sử dụng

Số thập Mã nhị Mã dư 3 Mã Mã thập phân Mã 7 vạch


Mã dư 3 Mã Gray NBCD
phân phân Gray Johnson 0123456789 a b c d e f g
0 0000 0011 0000 0010 0000 00000 1000000000 1 1 1 1 1 10
1 0001 0100 0001 0110 0001 00001 0100000000 0 1 1 0 0 0 0
2 0010 0101 0011 0111 0010 00011 0010000000 1 1 0 1 1 0 1
3 0011 0110 0010 0101 0011 00111 0001000000 1 1 1 1 0 0 1
4 0100 0111 0110 0100 0100 01111 0000100000 0 1 1 0 0 1 1
5 0101 1000 0111 1100 0101 11111 0000010000 1 0 1 1 0 1 1
6 0110 1001 0101 1101 0110 11110 0000001000 1 0 1 1 1 1 1
7 0111 1010 0100 1111 0111 11100 0000000100 1 1 1 0 0 0 0
8 1000 1011 1100 1110 1000 11000 0000000010 1 1 1 1 1 1 1
9 1001 1100 1101 1010 1001 10000 0000000001 1 1 1 1 0 1 1
10 1010 1101 1111 1011
11 1011 1110 1110 1001
12 1100 1111 1010 1000
13 1101 0000 1011 0000
14 1110 0001 1001 0001
15 1111 0010 1000 0011

13
CÂU HỎI VÀ BÀI TẬP
1. Hệ thống số nhị phân là gì?
2. Tại sao hệ nhị phân được dùng ở các mạch số?
3. Chuyển đổi số nhị phân sang thập phân và ngược lại, cách chuyển đổi nào dễ
và nhanh hơn?
4. Hệ thống số thập lục phân là gì? Tại sao không dùng số nhị phân thuần tuý mà
dùng hệ thập lục phân?
5. Ở hệ thống số thập lục phân số F ở hàng đơn vị có giá trị thập phân là bao
nhiêu? Số F ở hàng kế trên hàng đơn vị có giá trị thập phân là bao nhiêu?
6. Đổi các số nhị phân sau thành số thập phân:
1101101011
110110,1011
7. Đổi các số thập phân sau ra số nhị phân:
47; 953; 47,125; 953,333
8. Cần phải dùng số nhị phân có bao nhiêu bit để diễn tả các số thập phân từ 0
đến: 512; 10000
9. Đổi các số thập lục phân sau sang thập phân và nhị phân:
25; FE; 3FF; 7FFF
10. Đổi các số nhị phân sau sang số thập lục phân:
1011; 1011011; 101101110111011
11. Viết các số thập phân sau theo mã BCD:
2003; 12090
12. Để diễn tả số thập phân 999 thì số bit của số nhị phân ít hơn số bit của mã
BCD là bao nhiêu bit?

14

You might also like