Tài liu vi x Đại cương
Phm Hùng Kim Khánh Trang 1
CHƯƠNG 1: ĐẠI CƯƠNG
1. Các h thng s dùng trong máy tính và các loi mã
1.1. H thp phân (Decimal Number System)
Trong thc tế, ta thường dùng h thp phân để biu din các giá tr s. h
thng này, ta dùng các t hp ca các ch s 0..9 để biu din các giá tr. Mt s trong
h thp phân được biu din theo các s mũ ca 10.
VD: S 5346,72 biu din như sau:
5346,72 = 5.103 + 3.102 + 4.10 + 6 + 7.10-1 + 2.10-2
Tuy nhiên, trong các mch đin t, vic lưu tr và phân bit 10 mc đin áp
khác nhau rt khó khăn nhưng vic phân bit hai mc đin áp thì li d dàng. Do đó,
người ta s dng h nh phân để biu din các giá tr trong h thng s.
1.2. H nh phân (Binary Number System)
H nh phân ch dùng các ch s 0 và 1 để biu din các giá tr s. Mt s nh
phân (binary digit) thường được gi là bit. Mt chui gm 4 bit nh phân gi là nibble,
chui 8 bit gi là byte, chui 16 bit gi là word và chui 32 bit gi là double word.
Ch s nh phân bên phi nht ca chui bit gi là bit có ý nghĩa nh nht (least
significant bit – LSB) và ch s nh phân bên trái nht ca chui bit gi là bit có ý
nghĩa ln nht (most significant bit – MSB). Mt s trong h nh phân được biu din
theo s mũ ca 2. Ta thường dùng ch B cui chui bit để xác định đó là s nh phân.
VD: S 101110.01b biu din giá tr s:
101110.01b = 1x25 + 0x24 + 1x23 +1x22 + 1x21 + 0 + 0x2-1 + 1x2-2
Chuyn s nh phân thành s thp phân:
Để chuyn mt s nh phân thành mt s thp phân, ta ch cn nhân các ch s
ca s nh phân vi giá tr thp phân ca nó và cng tt c các giá tr li.
VD: 1011.11B = 1x23 + 0x22 + 1x21 + 1 + 1x2-1 + 1x2-2 = 11.75
Chuyn s thp phân thành s nh phân:
Để chuyn mt s thp phân thành s nh phân, ta dùng 2 phương pháp sau:
¾ Phương pháp 1: Ta ly s thp phân cn chuyn tr đi 2i trong đó 2i
là s ln nht nh hơn hay bng s thp phân cn chuyn. Sau đó, ta
li ly kết qu này và thc hin tương t cho đến 20 thì dng. Trong
quá trình thc hin, ta s ghi li các giá tr 0 hay 1 cho các bit tu
theo trường hp s thp phân nh hơn 2i (0) hay ln hơn 2i (1).
Tài liu vi x Đại cương
Phm Hùng Kim Khánh Trang 2
VD: Xét s 21 thì s 2i ln nht là 24
2
4 2
3 2
2 2
1 2
0
16 8 4 2 1
21 = 1 0 1 0 1 ( 21 = 10101B)
5 5 1 1 0
¾ Phương pháp 2: Ly s cn chuyn chia cho 2, ta nh li s dư
ly tiếp thương ca kết qu trên chia cho 2 và thc hin tương t cho
đến khi thương cui cùng bng 0. Kết qu chuyn đổi s là chui các
bit là các s dư ly theo th t ngược li.
VD: Chuyn 227 ra s nh phân
S b chia Thương S dư
227 113 1 ( LSB)
113 56 1
56 28 0
28 14 0
14 7 0
7 3 1
3 1 1
1 0 1 ( MSB)
( 227 = 11100011b)
Để thc hin chuyn các s thp phân nh hơn 1 sang các s nh phân, ta làm
như sau: ly s cn chuyn nhân vi 2, gi li phn nguyên và li ly phn l nhân vi
2. Quá trình tiếp tc cho đến khi phn l bng 0 thì dng. Kết qu chuyn đổi là chui
các bit là giá tr các phn nguyên.
VD: Chuyn 0.625 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.3. H thp lc phân (Hexadecimal Number System)
Như đã biết trên, nếu dùng h nh phân thì s cn mt s lượng ln các bit để
biu din. Gi s như s 1024 = 210 s cn 10 bit để biu din. Để rút ngn kết qu
biu din, ta dùng h thp lc phân da cơ s trên s mũ ca 16. Khi đó, 4 bit trong h
nh phân (1 nibble) s biu din bng 1 ch s trong h thp lc phân (gi là s hex).
Trong h thng này, ta dùng các s 0..9 và các kí t A..F để biu din cho mt
giá tr s. Thông thường, ta dùng ch h cui để xác định đó là s thp lc phân.
1.4. Mã BCD (Binary Coded Decimal)
Trong thc tế, đối vi mt s ng dng như đếm tn, đo đin áp, … ngõ ra
dng s thp phân, ta dùng mã BCD. Mã BCD dùng 4 bit nh phân để mã hoá cho mt
s thp phân 0..9. Như vy, các s hex A..F không tn ti trong mã BCD.
Tài liu vi x Đại cương
Phm Hùng Kim Khánh Trang 3
VD: S thp phân 5 2 9
S BCD 0101 0010 1001
1.5. Mã hin th Led 7 đon (7-segment display)
Đối vi các ng dng dùng hin th s liu ra Led 7 đon, ta dùng mã hin th
Led 7 đon (bng 1.1).
Bng 1.1:
Mã Led 7 đon
S thp phân S thp lc phân S nh phân a b c d e f g Hin th
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
1 1 1 1 1 1 0
0 1 1 0 0 0 0
1 1 0 1 1 0 1
1 1 1 1 0 1 1
0 1 1 0 0 1 1
1 0 1 1 0 1 1
1 0 1 1 1 1 1
1 1 1 0 0 0 0
1 1 1 1 1 1 1
1 1 1 0 0 1 1
1 1 1 1 1 0 1
0 0 1 1 1 1 1
0 0 0 1 1 0 1
0 1 1 1 1 0 1
1 1 0 1 1 1 1
1 0 0 0 1 1 1
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
2. Các phép toán s hc
2.1. H nh phân
2.1.1. Phép cng
Phép cng trong h nh phân cũng thc hin ging như trong h thp phân.
Bng s tht ca phép cng 2 bit vi 1 bit nh (carry) như sau:
a
b
c
d
e
f
g
ea b fcgd
Tài liu vi x Đại cương
Phm Hùng Kim Khánh Trang 4
Bng 1.2:
Vào Ra
A B CIN S COUT
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
0
0
1
0
1
1
1
S = A B CIN
COUT = AB + CIN(A B)
VD: 1001 1010
1 + 1100 1100
Nh 0111 0110
2.1.2. S bù 2 (2’s component)
Trong h thng s thông thường, để biu din s âm ta ch cn thêm du – vào
các ch s. Tuy nhiên, trong h thng máy tính, ta không th biu din được như trên.
Phương pháp thông dng là dùng bit có ý nghĩa ln nht (MSB) làm bit du (sign bit):
nếu MSB = 1 s là s âm còn MSB = 0 là s dương. Khi đó, các bit còn li s biu
din độ ln (magnitude) ca s. Như vy, nếu ta dùng 8 bit để biu din thì s thu
được 256 t hp ng vi các giá tr 0..255 (s không du) hay –127.. –0 +0 … +127
(s có du).
Để thun tin hơn trong vic tính toán s có du, ta dùng mt dng biu din
đặc bit là s bù 2. S bù 2 ca mt s nh phân xác định bng cách ly đảo các bit ri
cng thêm 1.
VD: S 7 biu din là : 0000 0111 có MSB = 0 (biu din s dương)
S bù 2 là : 1111 1000 + 1 = 1111 1001. S này s đại din cho s
– 7.
Ta thy, để thc hin vic xác định s bù 2 ca mt s A, cn phi:
- Biu din s A theo mã bù 2 ca nó.
- Đảo các bit (tìm s bù 1 ca A).
- Cng thêm 1 vào để nhn được s bù 2.
Khi biu din theo s bù 2, nếu s dng 8 bit ta s có các giá tr s thay đổi t -
128..127.
2.1.3. Phép tr
Phép tr các s nh phân cũng đưc thc hin tương t như trong h thp phân.
Bng s tht ca phép tr 2 bit vi 1 bit mượn (borrow) như sau:
Tài liu vi x Đại cương
Phm Hùng Kim Khánh Trang 5
Bng 1.3:
Vào Ra
A B BIN D BOUT
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
1
1
1
0
0
0
1
S = A B BIN
BOUT =
(
)
IN
BBABA +
VD: 0110 1101 = 149
- 0011 0001 = 49
0011 1100 = 100
Ngoài cách tr như trên, ta cũng có th thc hin phép tr thông qua s bù 2
ca s tr.
VD: 0110 1101 0110 1101
- 0011 0001 + 1100 1111
1 0011 1100
S bù 1 Nh
1100 1110 + 1 = 1100 1111 (S bù 2)
Trong phép cng vi s bù 2, ta b qua bit nh cui cùng kết qu phép cng
s bù 2 là 0011 1100. Đây cũng chính là kết qu phép tr, bit MSB = 0 cho biết kết
qu là s dương.
VD: 77 0100 1101 0100 1101
- 88 - 0101 1000 + 1010 1000
- 11 1111 0101
S 88 = 0101 1000 s bù 1 là 1010 0111 s bù 2: 1010 1000
Kết qu phép cng s bù 2 là 1111 0101 có MSB = 1 nên là s âm. S bù 1 là
0000 1010 s bù 2: 0000 1011. Kết qu này chính là 11 nên phép tr s cho kết qu
là –11.
Ta thy, để thc hin chuyn s bù 2 thành s có du thì cn thc hin:
- Ly bù các bit để tìm s bù 1.
- Cng vi 1.
- Thêm du tr để xác định là s âm.