Đổi giữa các cơ số Phần nguyên và phần thập phân được đổi một cách riêng biệt Phần nguyên được đổi bằng cách sử dụng phép chia lặp cho cơ số mới và sử dụng chuỗi các số dư phát sinh để
Trang 1CHƯƠNG 1 HỆ THỐNG SỐ ĐẾM
1.1 CƠ SỐ - CHUYỂN ĐỔI CƠ SỐ
1.1.1 Khái niệm
Bất cứ một số nguyên dương R (R>1) đều có thể được chọn làm cơ số cho một
hệ thống số
Nếu hệ thống có cơ số R thì các số từ 0 đến (R-1) được sử dụng
Ví dụ: nếu R=8 thì các chữ số cần thiết là 0,1,2,3,4,5,6,7
Các hệ thống cơ số thông dụng trong kỹ thuật số:
• Thập phân (cơ số 10)
• Nhị phân (cơ số 2)
• Bát phân (cơ số 8)
• Thập lục phân (cơ số 16)
Một hệ thống với cơ số R được biểu diễn dưới dạng
(…a 3 a 2 a 1 a 0 a -1 a -2 a -3 …) R
Khai triển theo hàm mũ của R
N =(a3a2a1a0a-1a-2a-3)R
= a3.R3 + a2.R2 + a1.R1 + a0.R0 + a-1.R-1 + a-2.R-2 + a-3.R-3 Với các cơ số lớn hơn 10 thì cần phải thêm các ký hiệu để biểu hiện các số lớn
hơn 10 Ví dụ hệ thập lục phân (hex) có cơ số 16 thì A biểu thị 10, B biểu thị
11,…, F biểu thị 15
Đổi giữa các cơ số
Phần nguyên và phần thập phân được đổi một cách riêng biệt
Phần nguyên được đổi bằng cách sử dụng phép chia lặp cho cơ số mới và sử dụng chuỗi các số dư phát sinh để tạo ra số mới Phép tính số học được thực hiện trên các số hạng của cơ số cũ
Phần thập phân được đổi bằng cách nhân lặp lại cho cơ số mới, sử dụng các
số nguyên được tạo ra để biểu thị phân số được chuyển đổi, phép tính số học được thực hiện trên các cơ số cũ
Phần nguyên
Phần thập phân
Trang 2Ví dụ: Biến đổi phần nguyên trong hệ cơ số 10 sang hệ cơ số R
N = (anan-1…a2a1a0)R = an.Rn + an-1.Rn-1 + … + a2.R2 + a1.R1 + a0 Nếu chia N cho R, nhận được số dư là a0
R
N = an.Rn-1 + an-1.Rn-2 + … + a2.R1 + a1 +
R
a0 = Q1 + số dư a0 Chia Q1 cho R
R
Q1
= an.Rn-2 + an-1.Rn-3 + … + a3.R1 + a2 +
R
a1
= Q2 + số dư a1 Quá trình trên được thực hiện tiếp tục cho đến khi tìm được tất cả các hệ số an
Ví dụ: Biến đổi phần thập phân của hệ cơ số 10 sang hệ cơ số R
F = (a-1a-2a-3…a-m)R
= a-1.R-1 + a-2.R-2 + a-3.R-3 +… + a-m.R-m Nhân F với R
FR = a-1 + a-2.R-1 + a-3.R-2 +… + a-m.R-m+1 = a-1 + F1 Với a-1 là phần nguyên, F1 là phần lẻ của phép nhân Tiếp tục nhân R với F1
F1.R = a-2 + a-3.R-1 + a-4.R-2 + … + a-m.R-m+2 = a-2 + F2 Tiếp tục quá trình cho đến khi xác định hết các hệ số a-m
Biến đổi giữa 2 cơ số khơng phải là cơ số 10 cĩ thể thực hiện dễ dàng bằng cách
đầu tiên biến đổi sang cơ số 10 rồi biến đổi tiếp từ cơ số 10 sang cơ số mới
1.1.2 Hệ thập phân (hệ cơ số 10)
Hệ thập phân được kết hợp bởi 10 chữ số: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Một chữ số trong hệ thập phân được biểu diễn theo các số mũ của 10
Số mang trọng số lớn nhất gọi là MSD (most significant digit) Số mang trọng số nhỏ nhất gọi là LSD (least significant digit)
Ví dụ: Số 5346,72 biểu diễn như sau:
5346,72 = 5.103 + 3.102 + 4.10 + 6 + 7.10-1 + 2.10-2
10 3
,
10 2 10 1 10 0 10 -1 10 -2
phân
LSD Trọng số
Trang 3• Đếm trong hệ thập phân:
5 105
6 106
7 107
8 108
Tổng quát với N chữ số có thể đếm được 10N số khác nhau, bao gồm cả số 0 Số
thập phân lớn nhất là 10N – 1
1.1.3 Hệ nhị phân (hệ cơ số 2)
Hệ nhị phân dùng hai chữ số 0, 1
Một số trong hệ nhị phân được biểu diễn theo số mũ của 2
Một chữ số nhị phân gọi là bit
Chuỗi 4 bit nhị phân gọi là nibble
Chuỗi 8 bit gọi là byte
Chuỗi 16 bit gọi là word
Chuỗi 32 bit gọi là double word
Chữ số nhị phân bên phải nhất của chuỗi bit gọi là bit có ý nghĩa nhỏ nhất (least
significant bit – LSB)
Chữ số nhị phân bên trái nhất của chuỗi bit gọi là bit có ý nghĩa lớn nhất (most
significant bit – MSB)
Thường dùng chữ B cuối chuỗi bit để xác định đó là số nhị phân
Ví dụ: Số 1011,101B biểu diễn giá trị số:
1011,101B = 1.23 + 0.22 + 1.21 +1.20 + 1.2-1 + 0.2-2 + 1.2-3
2 3
1
2 2 2 1 2 0 2 -1 2 -3
phân
LSB
Trang 4• Đếm trong hệ nhị phân
Xét bộ đếm 4 bit, bắt đầu với tất cả các bit = 0
23 = 8 22 = 4 21 = 2 20 = 1
0
0
0
0
0
0
0
0
0
0
1
1
0
1
0
1
0
0
0
0
1
1
1
1
0
0
1
1
0
1
0
1
1
1
1
1
0
0
0
0
0
0
1
1
0
1
0
1
1
1
1
1
1
1
1
1
0
0
1
1
0
1
0
1
Cũng như trong hệ thập phân, nếu dùng N bit sẽ đếm được 2N lần
• Chuyển số nhị phân thành số thập phân:
Phương pháp: Cộng trọng số các bit 1
Ví dụ: 1011,11B = 1.23 + 0.22 + 1.21 + 1 + 1.2-1 + 1.2-2 = 11,75
• Chuyển số thập phân thành số nhị phân:
Phương pháp:
Phần nguyên: Chia 2, nhớ lại số dư
Phần thập phân: Nhân 2, nhớ lại phần nguyên
Ví dụ: Chuyển (25)10 ra số nhị phân
12 2
25 = + số dư 1 6
2
12 = + số dư 0 3
2
6 = + số dư 0
1 2
3 = + số dư 1 0
2
1 = + số dư 1
Trọng số
Trang 5Ví dụ: Chuyển (0,625)10 thành số nhị phân
0,625 × 2 = 1,25 0,25 × 2 = 0,5 0,5 × 2 = 1,0 0,625 = 0,101B
1.1.4 Các phép tốn số học trên số nhị phân
Các phép toàn số học trên số nhị phân chủ yếu vẫn giống các phép toán trên số
thập phân, ngoại trừ phép cộng và phép nhân thì đơn giản hơn
Bảng phép cộng cho số nhị phân
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 nhớ 1 cho số hạng kế tiếp
Ví dụ: cộng 1310 với 1110 dưới dạng nhị phân
1111 ← các số nhớ
1310 = 1101
1110 = 1011
11000 =2410
Bảng phép trừ cho số nhị phân
0 - 0 = 0
0 - 1 = 1 mượn 1 từ số hạng kế tiếp
1 - 0 = 1
1 - 1 = 0 Mượn1 từ 1 cột tương đương với việc trừ 1 tại cột đó
Ví dụ:
1010
← (mượn 1 từ cột thứ 3)
1101
← (mượn)
Bảng phép nhân cho số nhị phân
0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
Trang 61 x 1 = 1
Ví dụ: Nhân 1310 với 1110 ở dạng nhị phân
1101 1011
1101
1101
0000
1101
10001111 =14310 Đối với máy tính, phép nhân được thực hiện bằng phương pháp cộng và dịch
trái:
- Thành phần đầu tiên của tổng sẽ chính là số bị nhân nếu như LSB của số
nhân là 1 Ngược lại, LSB của số nhân bằng 0 thì thành phần này bằng 0
- Mỗi thành phần thứ i kế tiếp sẽ được tính tương tự với điều kiện là phải dịch
trái số bị nhân i bit
- Kết quả cần tìm chính là tổng các thành phần nói trên
Phép chia cho số nhị phân
Phép chia các số nhị phân cũng tương tự như đối với các số thập phân
Ví dụ: 30/6
011
000
110
110
0 Tương tự như đối với phép nhân, ta có thể dùng phép trừ và phép dịch phải cho
đến khi không thể thực hiện phép trừ được nữa
1.1.5 Số cĩ dấu - khơng dấu
Hệ thống số được chia làm 2 loại: không dấu và có dấu
Trong hệ thống có dấu: để biểu thị số nhị phân có dấu thường sử dụng bit MSB
để chỉ dấu: bit 0 chỉ số dương, bit 1 chỉ số âm, các bit còn lại để chỉ độ lớn
Như vậy, nếu ta dùng 8 bit để biểu diễn thì sẽ thu được 256 tổ hợp ứng với các
giá trị 0 255 (số không dấu) hay –127 –0 +0 … +127 (số có dấu)
Tuy nhiên, không đơn giản là cứ thay đổi bit MSB bằng 1 để biểu diễn giá trị
âm, ví dụ như 01000001 (+65) thành 11000001 (-65), các phép tính số học sẽ
không còn đúng
Giá trị âm được mô tả dưới dạng số bù 2
Trang 7Số bù 2 (2’s component)
Số bù 2 của một số nhị phân xác định bằng cách lấy đảo các bit rồi cộng thêm 1
Ví dụ: Trong hệ thống có dấu 8bit
Số +65 biểu diễn là: 0100 0001
Số bù 2 của +65 là: 1011 1110 + 1 = 1011 1111 (– 65)
Nhưng nếu đổi ngược 1011 1111 sang thập phân sẽ không nhận được -65 Để
xác định giá trị tuyệt đối của một số nhị phân âm, thực hiện lại các bước trên
Thử lại bằng cách lấy tổng của +65 và –65, kết quả phải bằng 0
+65 -65 +1011111101000001
Trong phép cộng với số bù 2, ta bỏ qua bit nhớ cuối cùng bởi vì có một bit gán
cho bit dấu nên kết quả vẫn đúng
Khi biểu diễn theo số bù 2, nếu sử dụng 8 bit ta sẽ có các giá trị số thay đổi từ
-128 127
Phép trừ thông qua số bù 2
Ngoài cách trừ như trên, ta cũng có thể thực hiện phép trừ thông qua số bù 2 của
số trừ: A-B=A+(-B)
- 0011 0001 → + 1100 1111
Số bù 1 Nhớ
1100 1110 + 1 = 1100 1111 (Số bù 2)
Kết quả 0011 1100, Bit MSB = 0 cho biết kết quả là số dương
Xét khoảng thay đổi sau
0 00000000 -1 11111111 -2 11111110 -3 11111101
Trang 8Thấy rằng các bit 0 ở số nhị phân âm biểu thị giá trị thập phân của nó: tính giá
trị của các bit 0 theo vị trí giống như với bit 1, cộng các giá trị lại và cộng 1
1.1.6 Hệ bát phân (hệ cơ số 8)
Hệ bát phân được kết hợp bởi 8 chữ số: 0, 1, 2, 3, 4, 5, 6, 7
Vị trí của mỗi chữ số có trọng số như sau:
84 83 82 81 80 8-1 8-2 8-3 8-4 8-5
¾ Đếm trong hệ bát phân
3
4
5
Với N chữ số bát phân, ta có thể đếm từ 0 đến 8N-1, 8N lần đếm khác nhau
¾ Chuyển số bát phân sang số thập phân:
Ví dụ: (24.6)8 = 2.81 + 4.80 + 6.8-1 =(20.75)10
¾ Chuyển số thập phân sang bát phân:
Ví dụ: đổi (266)10 sang hệ bát phân
33 8
266 = + số dư 2
4 8
33 = + số dư 1
0
84 = + số dư 4
26610 =
Ví dụ: Chuyển 0,3125 thành số bát phân
0,3125 × 8 = 2.5 0,5 × 8 = 4.0 ( 0,3125 = 0,248 )
Điểm bát phân
4128
Trang 9¾ Chuyển số bát phân sang số nhị phân:
Phương pháp: Biến đổi mỗi chữ số bát phân sang 3 bit nhị phân tương ứng
Số nhị phân
tương đương
000 001 010 011 100 101 110 111
Ví dụ: Biến đổi (472)8 sang số nhị phân như sau:
4 7 2
Vậy (472)8 chuyển sang nhị phân là 100111010B
¾ Chuyển số nhị phân sang số bát phân
Phương pháp: nhóm từng 3 bit bắt đầu tại LSB, sau đó chuyển mỗi nhóm
này sang số bát phân tương ứng (theo bảng chuyển đổi ở trên)
Ví dụ: chuyển 100111010B sang số bát phân
1 0 0 1 1 1 0 1 0 ↓ ↓ ↓ (4 7 2)8 Trường hợp các số nhị phân không đủ thành 1 nhóm 3 bits, ta thêm 1 hoặc 2
số 0 về bên trái của MSB
Ví dụ: chuyển 11010110 sang số bát phân
0 1 1 0 1 0 1 1 0 ↓ ↓ ↓ (3 2 6)8
¾ Lợi ích của hệ bát phân
Việc dễ dàng chuyển từ hệ bát phân sang nhị phân và ngược lại làm cho hệ
bát phân rất có lợi trong việc rút ngắn các số nhị phân lớn Trong máy tính,
các số nhị phân này không phải luôn luôn biểu hiện một con số mà thường
biểu thị dưới dạng mã mang thông tin, ví dụ:
• dữ liệu bằng số thực
• các số tương ứng với các vị trí (địa chỉ) trong bộ nhớ
• mã lệnh
• mã biểu thị số học và các đặc điểm khác
• một nóm các bit biểu hiện trạng thái của các thiết bị trong và ngoài mày tính
Khi giải quyết một lượng lớn các số nhị phân với nhiều bit, thường dùng các
số dưới dạng bát phân hơn là nhị phân để tăng độ tiện lợi, mặc dù các mạch
số và các hệ thống số làm việc hoàn toàn trên số nhị phân
Trang 10Ví dụ: Chuyển số 11710 sang hệ bát phân rồi chuyển sang hệ nhị phân
8
177 = + số dư 1
8
22 = + số dư 6
82 = + số dư 2 Vậy (177)10 =(261)8 = (10110001)2
Phương pháp chuyển số thập phân thành số nhị phân này thường nhanh hơn
việc chuyển thẳng từ thập phân sang nhị phân, đặc biệt đối với các số lớn
Cũng như vậy đối với việc chuyển ngược lại từ nhị phân sang thập phân
bằng cách chuyển sang số bát phân
1.1.7 Hệ thập lục phân (hệ cơ số 16)
Trong hệ thống này, ta dùng các số 0 9 và các kí tự A F để biểu diễn cho một
giá trị số (tương ứng với 10 đến 15 trong hệ 10) Thông thường, ta dùng chữ H ở
cuối để xác định đó là số thập lục phân
Hệ thập lục phân Hệ thập phân Hệ nhị phân
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
¾ Đếm trong hệ thập lục phân (hex)
Khi đếm trong hệ thập lục phân mỗi chữ số tăng từ 0 đến F sau đó về 0 và
chữ số có trọng số lớn hơn kế tiếp sẽ tăng lên 1
Trang 110 10 20
¾ Chuyển số hex sang thập phân
Ví dụ: 35616 = 3.162 + 5.161 + 6.160 = 85410
¾ Chuyển số hex sang nhị phân
Phương pháp: mỗi chữ số hex được biến đổi thành số nhị phân 4 bit tương
ứng
¾ Chuyển đổi số nhị phân sang số hex
Phương pháp: các bit nhị phân được nhóm vào nhóm 4 bit từ LSB, mỗi
nhóm 4 bit được biến đổi sang số hex tương ứng Nếu số bit không đủ 4, thì
cộng thêm bit 0 vào MSB
Ví dụ: 11101001102 = 0 0 1 1 1 0 1 0 0 1 1 0 = 3A616
3 A 6
Ví dụ: Chuyển (378)10 sang số hex rồi chuyển sang số nhị phân, nhận xét
Ví dụ: Chuyển B2F16 sang bát phân
1.2 CÁC BỘ MÃ HĨA SỐ HỆ MƯỜI THƠNG DỤNG
Khi các số, mẫu tự hoặc các từ words được biểu thị dưới dạng một nhóm các ký
hiệu khác, ta nói rằng chúng được mã hóa và nhóm ký tự đó được gọi là một
mã
Một trong những mã thông dụng nhất là mã Morse, chúng bao gồm các chấm và
gạch để biểu hiện các mẫu tự hay các chữ cái
Bất cứ số thập phân nào cũng có thể được mô tả bằng số nhị phân tương ứng,
một nhóm các số nhị phân 0 và 1 có thể được xem là một mã cho số thập phân
Khi một số thập phân được mô tả bằng số nhị phân tương ứng với nó, người ta
gọi là mã nhị phân trực tiếp (straight binary code)
Trang 12Tất cả các hệ thống số dùng một số dạng các số nhị phân cho việc thực thi bên
trong, nhưng các từ bên ngoài thì thường là thập phân, nghĩa là có một sự biến
đổi thường xuyên từ thập phân sang nhị phân, sự biến đổi từ thập phân sang nhị
phân có thể chiếm một khoảng thời gian lâu và phức tạp đối với một số lớn Vì
lý do đó, việc mã hóa các số thập phân bằng cách kết hợp một vài chức năng
của cả hệ thống thập phân và nhị phân được sử dụng trong các tình huống
1.2.1 Mã BCD (Binary-Coded-Decimal Code)
Nếu mỗi chữ số của số thập phân được mô tả bằng số nhị phân tương ứng với
nó, kết quả ta được 1 mã gọi là mã BCD, vì chữ số thập phân lớn nhất là 9, cần
4 bit để mã hóa
Các số 8,4,2,1 được gọi là trọng số của mã và được gọi là mã BCD 8-4-2-1
Đôi khi trọng số 8-4-2-1 tỏ ra không thuận tiện trong tính toán, một số trọng số
khác cũng được sử dụng như 2-4-2-1, 5-4-2-1, 7-4-2-1…
MÃ BCD Trọng số Trọng số Trọng số Trọng số
Thập
phân
8 4 2 1 7 4 2 1 2 4 2 1 5 1 2 1
0
1
2
3
4
5
6
7
8
9
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
0
0
1
1
0
0
0
1
0
1
0
1
0
1
0
1
0
0
0
0
0
0
0
1
1
1
0
0
0
0
1
1
1
0
0
0
0
0
1
1
0
0
1
0
0
1
0
1
0
1
0
1
0
0
1
0
0
0
0
0
0
1
1
1
1
1
0
0
0
0
1
0
1
1
1
1
0
0
1
1
0
1
0
0
1
1
0
1
0
1
0
0
0
1
0
1
0
0
0
0
0
1
1
1
1
1
0
0
0
0
1
0
0
0
0
1
0
0
1
1
0
0
0
1
1
1
0
1
0
1
0
0
1
0
1
1 Lưu ý rằng các loại mã 5-1-2-1 và 2-4-2-1 là không duy nhất trong khi mã
8-4-2-1 và 7-4-8-4-2-1 lại duy nhất
Ví dụ: Số thập phân 874 chuyển sang tương đương nhị phân như sau:
1000 0111 0011 (BCD 8-4-2-1)
1011 1010 0011 (BCD 5-1-2-1) hoặc 1011 1101 0110 (BCD 5-1-2-1) Một lần nữa, mỗi chữ số thập phân được biến đổi trực tiếp sang số nhị phân
tương ứng, lưu ý rằng 4 bit luôn được dùng cho mỗi chữ số thập phân
Trang 13Trong bài giảng này lấy mã BCD 8-4-2-1 làm ví du Mã BCD biểu thị mỗi chữ
số của số thập phân bằng số nhị phân 4 bit, sử dụng các số nhị phân 4 bit từ
0000 đến 1001, không sử dụng các số 1010, 1011, 1100, 1101, 1110 và 1111
Ví dụ: Biến đổi 0110100000111001 (BCD 8-4-2-1) sang giá trị thập phân
Giải
Chia số BCD thành các nhóm 4 bit và biến đổi sang thập phân
0110 1000 0011 1001 = 6839
So sánh BCD và nhị phân Một điều quan trọng là mã BCD không giống như
mã nhị phân trực tiếp Mã nhị phân trực tiếp biến đổi số thập phân sang nhị
phân trong khi mã BCD biến đổi mỗi chữ số trong số thập phân sang nhị phân
Xét ví dụ biến đổi 137 sang mã nhị phân trực tiếp và sang BCD 8-4-2-1 như sau:
13710 = 100010012 (nhị phân)
13710 = 0001 0011 0111 (BCD 8-4-2-1)
Mã BCD cần 12 bit trong khi mã nhị phân trực tiếp chỉ cần 8 bit để biểu thị số
137 Mã BCD cần nhiều bit hơn là bởi vì BCD không dùng hết các khả năng của
các nhóm 4 bit và vì vậy có phần nào đó không hiệu quả
Ưu điểm chính của BCD là dễ dàng chuyển sang thập phân Chỉ phải nhớ các
nhóm mã 4bit cho các số thập phân từ 0 đến 9 Sự dễ dàng chuyển đổi này đặc
biệt quan trọng theo quan điểm về phần cứng vì trong một hệ thống số, nó là
các mạch logic để tạo nên sự chuyển đổi sang và từ thập phân
1.2.2 Các phép tốn số học với mã BCD
Cộng BCD
Cộng hai số BCD có điểm khác so với cộng hai số nhị phân Khi tổng của mỗi
số hạng BCD ≤ 9 thì tổng đó là kết quả cuối cùng
Ví dụ,
Khi tổng hai số nhị phân ≥ 9 thì tổng phải được cộng thêm 6 và nhớ 1 lên hàng
BCD có nghĩa cao hơn
Ví dụ,
0001 0111 (17)
0010 0101 (25)
0011 1100 Kết quả ≥ 9
0110 (6)
0100 0010 (42)