Professional Documents
Culture Documents
CHÆÅNG I
CAÏC HÃÛ ÂÃÚM VAÌ VIÃÛC MAÎ HOÏA THÄNG TIN TRONG MAÏY
TÊNH
Nibble
byte
word
Double
Word
Vì con người chỉ quen tính toán với hệ mười, trong khi các bộ
phận tính toán của máy tính chỉ biết làm việc với hệ hai, nên để đảm
bảo sự giao tiếp thuận tiện giữa người và máy (khi đưa số liệu vào và
lúc lấy ra kết quả tính toán) thường xuyên phải có việc chuyển đổi qua
lại giữa hai hệ đếm này. Chúng ta cùng xem xét nhanh các vấn đề trên
thông qua các ví dụ đơn giản dưới đây.
Một số hệ mười viết như sau: 12345,67
2
Sẽ có giá trị số bằng tổng của các tích giữa các hệ số 1,2,3,4,5,6,7 với
các trọng số 10i như sau:
12345,67=1.104 +2.103 +3.102 +4.101 +5.100 +6.10-1 +7.10-2
Tương tự như vậy, một số hệ hai viết như sau: 10111,01
Sẽ có giá trị số bằng tổng của các tích giữa các hệ số 1,0,1,1,1,01,1 với
các trọng số 2i tương ứng lần lược như sau:
=1.24 +0.23 +1.22 +1.21 +1.20 +0.2-1 +1.2-2
Các thuật toán thường dùng để chuyển đổi giữa hai hệ trên:
. Đổi số hệ hai sang hệ mười
Muốn đổi một số từ hệ hai sang hệ mười chỉ cần tính các giá trị 2i
tương ứng với các chữ số khác không thứ i của hệ số hai rồi cộng lại
như đã nói ở trên:
Ví dụ
10111,11B =24 +22 +21 +20 +2-1 +2-2 =25,75
Ngược lại muốn chuyển một số từ hệ mười sang hệ hai ta có thể
làm theo hai cách:
. Cách một để đổi số hệ mười sang hệ hai
Quy tắc: Lấy số hệ mười cần đổi trừ đi 2x (x là giá trị lớn nhất của
số mũ chọn sao cho 2x nhỏ hơn hoặc bằng so với số hệ 10 cần đổi), ghi
lại giá trị 1 cho chữ số hệ hai ứng với 2x. Tiếp tục làm như vậy đối với
số dư do phép trừ trên tạo ra và các số 2 i bậc thấp hơn cho tới đạt tới
20 và ghi lại các gia trị (0 hoặc 1) cho chữ số hệ hai thứ i tùy theo quan
hệ giữa số dư và lũy thừa tương ứng:
0 17 2
1 8 2
0 4 2
0 2 2
0 1 2
1 0
Caïc säú dæ trong khung seî âæåüc sàõp xãúp theo chiãöu
muîi tãn
HÇnh 1.1. Mäüt caïch âäøi säú hãû mæåìi sang hãû hai..
Trong træåìng håüp säú hãû mæåìi cáön âäøi coï thãm caí pháön
leí sau dáúu pháøy thç âáöu tiãn ta phaíi âäøi riãng reî tæìng pháön
räöi sau âoï cäüng caïc kãút quaí laûi. Âäúi våïi pháön nguyãn ta coï
thãø laìm theo 2 caïch âaî noïi åí trãn. Riãng âäúi våïi pháön sau dáúu
pháøy ta âäøi theo quy tàõc trçnh baìy sau âáy.
• Quy tàõc âäøi säú tháûp phán hãû mæåìi ra hãû hai
Láúy säú cáön âäøi nhán våïi 2, têch nháûn âæåüc seî gäöm
pháön nguyãn vaì pháön leí nhë phán, láúy pháön leí nhë phán cuía
têch thu âæåüc nhán tiãúp våïi 2. Laìm nhæ váûy cho tåïi khi âæåüc
têch chàôn bàòng 1. Choün riãng caïc pháön nguyãn (pháön træåïc
dáúu pháøy) cuía caïc têch thu âæåüc vaì sàõp xãúp laûi seî âæåüc
caïc chæî säú sau dáúu pháøy cuía säú hãû hai cáön tçm.
Vê duû: Âäè säú 0.125 ra säú hãû hai.
Ta thæûc hiãûn pheïp nhán láön læåüt theo caïc bæåïc trãn:
0,125 * 2 = 0 ,250
0,250 * 2 = 0 ,500
0,500 * 2 = 1 ,000
vaì thu âæåüc kãút quaí laì 0,125 = 0,001B (pháön âæåüc âoïng
trong khung).
Kãút håüp caïc vê duû trãn laûi, nãúu phaíi âäøi säú 34,125 ra
hãû hai ta thu âæåüc kãút quaí cuäúi cuìng laì 34,125 = 100010,001 B.
1.2. Säú BCD (säú hãû mæåìi maî hoïa bàòng hãû hai)
Giæîa hãû mæåìi vaì hãû hai coìn täön taûi mäüt hãû lai: hãû
BCD cho caïc säú hãû mæåìi maî hoïa bàòng hãû hai (Binary Coded
Decimal number), ráút thêch håüp cho caïc thiãút bë do coï thãm
pháön hiãûn thë säú åí âáöu ra duìng caïc loaûi âeìn hiãûn säú khaïc
nhau. ÅÍ âáy ta duìng 4 säú hãû hai âãø maî hoïa mäüt säú hãû mæåìi
coï giaï trë nàòm trong khoaíng 0 ..9. Nhæ váûy, åí âáy ta khäng duìng
hãút caïc täø håüp coï thãø coï cuía 4 bit. Vç táöm quan troüng cuía
caïc säú BCD nãn caïc bäü vi xæí lyï thæåìng coï caïc lãûnh thao taïc
våïi chuïng.
4
Vê duû: Säú 410 nãúu biãøu diãùn theo kiãøu säú BCD thç
âæåüc 0100 0001 0000. Kãút quaí naìy cuîng gåüi yï cho ta caïch
thæïc chuyãøn âäøi giæîa hai loaûi säú.
2. Caïc pheïp toaïn säú hoüc âäúi våïi säú hãû hai
2.1. Pheïp cäüng
Pheïp cäüng caïc säú hãû hai thæûc hiãûn giäúng nhæ khi ta
laìm våïi säú hãû mæåìi. Quy tàõc pheïp cäüng säú hãû hai âæåüc chè
ra trong baíng 1.1.
a b y C a b y B
0 0 0 0 0 0 0 0
0 1 1 0 0 1 1 1
1 0 1 0 1 0 1 0
1 1 1 1 1 1 0 0
C: nhåï (Carry) B:
mæåün (Borrow)
Vê duû:
Cäüng hãû mæåìi Cäüng hãû hai
11 nhåï 1111 1110
099 Säú haûng 1 0110 0011
095 Säú haûng 2 0101 1111
5
Baíng 1.3. Biãøu diãùn caïc säú theo hãû hai, hãû hai coï dáúu
vaì maî buì hai.
Säú 8 bit säú hãû mæåìi säú hãû mæåìi theo
säú hãû mæåìi tênh
hãû hai tæång âæång maî hãû hai coï dáúu
theo maî buì hai
0000 0000 0 +0
+0
0000 0001 1 +1
+1
0000 0010 2 +2
+2
... ... ...
...
0111 1101 125 + 125
+ 125
6
Quan saït kyî baíng naìy chuïng ta coï thãø ruït ra caïc nháûn xeït
sau:
1. Nãúu ta duìng 8 bit âãø biãøu diãùn säú thç ta thu âæåüc 256
täø håüp coï giaï trë tæì 0 âãún 255 (tæång æïng 00 .. FF H),
tæïc laì chè biãøu diãùn âæåüc säú dæång.
2. Våïi täø håüp trãn nãúu ta muäún biãøu diãùn säú coï dáúu
theo kiãøu dáúu vaì âäü låïn (sign and magnitude) ta phaíi
máút 1 bit âãø daình cho dáúu vaì 7 bit coìn laûi âãø âënh giaï
trë. Våïi caïch laìm naìy ta coï khaí nàng biãøu diãùn caí säú
ám vaì säú dæång nàòm trong khoaíng -127 .. -0, +0 .. +127
(chuï yï 2 giaï trë 0 khaïc nhau).
3. Säú buì hai âæåüc taûo ra theo caïch gáön giäúng nhæ kiãúu
dáúu vaì âäü låïn nhæng noï duìng caí 8 bit âãø biãøu diãùn
giaï trë cuía säú âæåüc maî hoïa. Maî buì hai daìi 8 bit coï khaí
nàng biãøu diãùn caïc säú ám vaì dæång trong khoaíng
-128..0..+127. Mäüt säú dæång coï maî buì hai giäúng nhæ
hãû maî hai thäng thæåìng.
4. Mäüt säú biãøu diãùn theo hãû hai seî coï caïc giaï trë khaïc
nhau nãúu hiãøu âoï laì maî âãø biãøu diãùn säú theo kiãøu
hãû hai coï dáúu hoàûc kiãøu säú buì hai. Noïi khaïc âi, mäüt
cuûm caïc säú 0 vaì 1 seî âæåüc caím nháûn khaïc nhau khi
noï biãøu diãùn giaï trë säú theo caïc maî khaïc nhau. Cho duì
coï âæåüc biãøu diãùn bàòng säú hãû hai coï dáúu hay säú
buì hai thç caïc säú ám âãöu coï bit b7 = 1, coìn caïc säú
dæång coï bit b7 = 0.
7
Báy giåì ta noïi cuû thãø caïch tênh säú buì hai cuía mäüt säú
naìo âoï. Vãö màût toaïn hoüc thç sê buì hai cuía mäüt säú chênh laì
säú âäúi cuía noï. Nhæ váûy mäüt säú dæång seî coï säú buì hai laì
mäüt säú ám cuìng giaï trë tuyãût âäúi vaì ngæåüc laûi.
Quy tàõc: Muäún tçm säú buì hai (coìn goüi laì buì säú hoüc) cuía
mäüt säú A ta laìm theo caïc bæåïc sau:
• biãøu diãùn säú A theo maî buì hai cuía noï
• tçm säú buì mäüt (buì logic) cuía säú âoï (bàòng caïch
âaío bit)
• cäüng 1 vaìo säú buì mäüt åí trãn âãø nháûn âæåüc säú
buì hai cuía säú A.
Ghi chuï: Khi coï mäüt säú ám âæåüc biãøu diãùn theo maî buì
hai nãúu muäún tênh giaï trë tuyãût âäúi cuía noï ta cuîng aïp duûng
quy tàõc naìy (aïp duûng caïc bæåïc 2.3).
Vê duû: Tçm säú buì hai cuía 13.
13 = 0000 1101 B (maî buì hai cuía 13)
säú buì 1 cuía 13: 1111 0010 B (âaío bit cuía säú trãn)
cäüng thãm 1: 1
säú buì hai cuía 13: 1111 0011 B (tæïc laì -13)
Coï thãø láúy mäüt vê duû khaïc âãø chæïng toí kãút quaí trãn laì
âuïng vaì qua âoï cuîng tháúy âæåüc æïng duûng cuía säú buì hai
trong khi laìm pheïp træì.
Vê duû: 15 - 13 = ?
Ta coï thãø viãút laûi pheïp træì trãn thaình pheïp cäüng 15 + (-
13) vaì sæí duûng kãút quaí væìa tênh âæåüc åí trãn cho säú (-13):
15 ... 0000 1111
(-13) ... 1111 0011
täøng ... 0000 0010 (nhåï 1)
Nãúu khäng âãø yï âãún nhåï ta coï kãút quaí laì 2.
Vê duû: 12 - 13 = ?
12 ... 0000 1100
(-13) ... 1111 0011
täøng ... 1111 1111 (tæïc -1)
Âáy laì mäüt säú ám (bit b7=1) våïi giaï trë tuyãût âäúi laì
1 (tra theo baíng 1.2). Màût khaïc ta cuîng coï thãø tçm âæåüc giaï trë
tuyãût âäúi cuía kãút quaí bàòng caïch tçm säú buì hai cuía noï:
Maî buì hai cuía kãút quaí trãn ... 1111 1111
Säú buì 1 cuía kãút quaí trãn ... 0000 0000
Cäüng - âãø tçm giaï trë tuyãût âäúi ... 0000 0001
Pheïp nhán caïc säú hãû hai thæûc hiãûn giäúng nhæ khi ta laìm
våïi hãû säú mæåìi. Quy tàõc pheïp nhán säú hãû hai âæåüc chè ra
trong baíng 1.4
Âäü daìi cæûc âaûi cuía kãút quaí trong træåìng håüp naìy laì 8
bit. Nãúu ta coï caïc toaïn haûng 8 (hoàûc 16) bit thç âäü daìi cæûc
âaûi cuía kãút quaí laì 16 (hoàûc 32) bit. Mäùi láön nhán 1 bit khaïc 0
cuía säú nhán våïi säú bë nhán ta thu âæåüc chênh säú bë nhán. Nãúu
dëch traïi noï mäüt säú láön tæång æïng våïi vë trê cuía bit khaïc 0 âoï
trong säú nhán, ta taûo ra 1 thaình pháön cuía täøng têch luyî. Täøng
cuía caïc thaình pháön nhæ trãn laì kãút quaí cuía pheïp nhán.
Phán têch kyî quaï trçnh trãn ta tháúy pheïp nhán coï thãø thæûc
hiãûn theo thuáût toaïn cäüng vaì dëch (trãn cå såí caïc bäü cäüng vaì
dëch) nhæ sau:
• Thaình pháön âáöu tiãn cuía täøng têch luyî thu âæåüc laì
têch cuía säú LSB trong säú nhán våïi säú bë nhán. Nãúu LSB
= 0 thç thaình pháön naìy cuîng bàòng 0, coìn nãúu LSB = 1
thç thaình pháön naìy chênh bàòng säú bë nhán.
• Mäùi thaình pháön thæï i tiãúp theo cuía täøng têch luyî seî
tênh âæåüc bàòng caïch tæång tæû, nhæng phaíi dëch traïi i
bit (coï thãø boí qua caïc thaình pháön bàòng 0).
• Täøng cuía caïc täøng thaình pháön laì têch cáön tçm.
9
Âãø minh hoaû cho thuáût toaïn trãn, ta duìng luän noï âãø ruït
goün vê duû âaî laìm træåïc âáy nhæ sau:
1001 Säú bë nhán (9)
0110 Säú nhán (6)
1001 Säú bë nhán dëch traïi 1 láön
1001 Säú bë nhán dëch traïi 2 láön
0110110 Täøng têch luyî (54)
Pheïp chia laì pheïp tênh ngæåüc cuía pheïp nhán. Tæì âoï suy ra
pheïp chia coï thãø âæåüc thæûc hiãûn bàòng caïc pheïp træì vaì
pheïp dëch liãn tiãúp cho tåïi khi khäng thãø træì âæåüc næîa (do
khäng coìn gç âãø træì hoàûc säú bë træì nhoí hån säú chia). Sau âáy
laì thuáût toaïn cuía pheïp chia thäng qua vê duû cuû thãø.
Vê duû: 35/5 = 7
Ta haîy quan saït kyî caïc bæåïc phaíi laìm khi chia bàòng tay:
100011 101
000 0111
1000
101
111
101
101
101
0
Trong caïc bæåïc tênh åí trãn liãn tuûc cáön phaíi coï caïc dæû
âoaïn vaì kiãøm tra âãø tçm ra âæåüc kãút quaí âuïng. Cäng viãûc naìy
laì ráút khoï khàn âäúi våïi caïc maûch âiãûn tæí cuía khäúi tênh toaïn
säú hoüc (väún laì caïc pháön tæí âãø thæûc hiãûn pheïp cäüng vaì
dëch trong maïy tênh). Sau âáy laì mäüt thuáût toaïn khàõc phuûc
âæåüc caïc váún âãö nãu åí trãn:
1.Âäøi säú chia ra säú buì hai cuía noï (âãø bæåïc åí sau laìm
tênh træì bàòng tênh cäüng).
2.Láúy säú bë chia træì âi säú chia.
Nãúu kãút quaí naìy coï bit dáúu bàòng 0 (coï nghéa laì pháön
naìy cuía säú bë chia chia âæåüc cho säú chia) thç bit tæång æïng cuía
thæång bàòng 1.
Nãúu kãút quaí naìy coï bit dáúu bàòng 1 (coï nghéa laì pháön
naìy cuía säú bë chia khäng chia âæåüc cho säú chia) thç bit tæång
æïng cuía thæång bàòng 0 vaì ta buäüc phaíi khäi phuûc laûi giaï trë
ban âáöu cuía säú bë chia bàòng caïch cäüng kãút quaí naìy våïi säú
chia åí maî hãû hai.
10
3.Dëch traïi kãút quaí thu âæåüc åí trãn vaì laìm laûi bæåïc 2 cho
âãún khi nháûn âæåüc kãút quaí cuäúi cuìng laì 0 (chia hãút) hoàûc
nhoí hån säú chia (chia coìn dæ).
Âáöu tiãn ta coï 5 = 0101B vaì säú buì hai cuía noï laì 1011B.
Caïc bæåïc tênh toaïn tiãúp cuía pheïp chia theo thuáût toaïn âaî
nãu åí trãn âæåüc liãût kã ra nhæ sau:
Toaïìn haûng Thæång Tãn toaïn
haûng, thao taïc
Bit dáúu
Tæì âáy ta ruït ra 36/5 = 7 vaì dæ 1.
11
3. Maî ASCII - maî tiãu chuáøn cho trao âäøi thäng tin
14 30 46 62 78 94 10 26
F <SI> <US> / ? O _ o <DEL>
1
1
15 31 27
47 63 79 95 11
Trong caïc pháön træåïc ta âaî noïi âãún caïch biãøu diãùn säú
trong caïc hãû âãúm. Báy giåì ta xem xeït viãûc biãøu diãùn thäng tin
noïi chung trong maïy tênh. Táút caí caïc thäng tin trong maïy tênh
âãöu âæåüc biãøu diãùn dæåïi daûng caïc säú 0 vaì 1. Mäùi täø håüp
cuía caïc säú 0 vaì 1 âæåüc gaïn mäüt kyï tæû chæî caïi, chæï säú
hoàûc mäüt kyï tæû khaïc theo mäüt caïch thæïc nháút âënh. Trogn
thæûc tãú thäng tin âæåüc truyãön âi, âæåüc læu giæî trong caïc bäü
nhåï hoàûc âãø hiãøn thë trãn maìn hçnh âãöu åí dæåïi daûng kyï tæû
vaì tuán theo 1 loaûi maî âæåüc duìng ráút räüng raîi goüi laì maî ASCII
(American Standard Code for Information Interchange, maî chuáøn cuía
Myî duìng cho trao âäøi thäng tin). Viãûc duìng caïc kyï tæû âãø maî
hoaï thäng tin theo baíng maî ASCII (baíng 1.5) cho ta khaí nàng trao
âäøi thäng tin våïi háöu hãút caïc maïy tênh khaïc.
Trong baíng maî ASCII tiãu chuáøn, ngæåìi ta duìng 7 bit âãø maî
hoïa caïc kyî tæû thäng duûng, nhæ váûy baíóng maî naìy seî coï 128
kyï tæû æïng våïi caïc maî säú tæì 0..127. Bit thæï 8 coï thãø cho liãn
tuûc bàòng 0, 1 hoàûc coï thãø duìng âãø chæïa bit parity (xem yï
nghéa cuía parity åí chæång 3, pháön noïi vãö caïc cåì) phuûc vuû cho
viãûc phaït hiãûn läùi khi truyãön.
Bãn caûnh baíng ASCII tiãu chuáøn ngæåìi ta coìn duìng baíng
ASCII måí räüng cho caïc kyï tæû âàûc biãût (khaïc caïc kyï tæû tiãu
chuáøn) våïi maî tæì 128.. 255.
Khi tra caïc baíng naìy ta âoüc maî cuía kyï tæû theo thæï tæû
cäüt – haìng.
Vê duû: Maî ASCII cuía mäüt säú kyï tæû thæåìng duìng trong
khi láûp trçnh:
<Bel> (Bell, chuäng): 7
<BS> (Back space, xoaï luìi): 8
<HT> (Horizont tab, giaîn caïch ngang): 9
<LF> (Line feed, thãm doìng måïi): OAH
<CR> (Carriage return, vãö âáöu doìng): ODH
<SP> (Space, dáúu caïch): 2OH;
‘$’: 24H; ‘0’: 30H; ‘9’: 39H; ‘A’:41H;
‘a’: 61H...
Khi xem xeït baíng 1.5 ta coï thãø ruït ra máúy nháûn xeït så bäü
nhæ sau:
1. 2 cäüt âáöu cuía baíng maî âæåüc duìng cho caïc kyï tæû
âiãöu khiãøn.
2. Cäüt 2 daình riãng cho caïc kyï tæû ngàn caïch
13
3. Caïc kyï tæû säú nàòm åí cäüt 3. Maî cuía kyï tæû ‘0’ laì 30H.
‘9’ laì 39H. Giæîa giaï trë säú vaì maî ASCII
cuía säú âoï coï khoaíng caïch laì 30H.
4. Caïc chæî caïi hoa nàòm åí caïc cäüt 4,5, caïc chæî caïi
thæåìng åí cäüt 6,7. Khoaíng caïch giæîa chæî
thæåìng vaì chæî hoa cuìng tãn laì 20H.
Trong khi laìm toaïn våïi caïc säú BCD ta thæåìng kãút håüp 2
säú BCD thaình 1 byte. Daûng säú BCD viãút theo kiãøu naìy goüi laì
daûng BCD chuáøn hay coìn âæåüc goüi laì daûng BCD goïi (packed
BCD). Khi læu træî, khi hiãûn thë hoàûc khi truyãön giæîa caïc thiãút
bë caïc giaï trë säú 0 .. 9, thæûc cháút ta laìm viãûc våïi maî ASCII cuía
caïc säú âoï, tæïc laì caïc säú 30H .. 39H. Nhæ váûy ta tháúy trong 1
byte maî ASCII biãøu diãùn caïc säú 0 ..9 coï 4 bit tháúp æïng våïi maî
BCD cuía chênh caïc säú âoï, 4 bit cao bao giåì cuîng æïng våïi maî
BCD cuía säú 3 (tæïc laì 0011B). Nãúu trong byte maî ASCII naìy ta
thay 4 bit cao bàòng OH thç ta thu âæåüc säú BCD khäng goïi. Noïi
caïch khaïc säú BCD khäng goïi laì säú daìi 1 byte, trong âoï 4 bit cao
bàòng khäng, 4 bit tháúp laì säú BCD chuáøn maî hoïa säú cáön biãøu
diãùn.
Vê duû sau minh hoüa quan hãû giæîa säú BCD goïi, BCD khäng
goïi vaì maî ASCII.
Maî ASCII cuía 5 laì 0011 0101B = 35H
Maî ASCII cuía 9 laì 0011 1001B = 39H
Maî ASCII khäng goïi cuía 5 laì 0000 0101B = 05H
Maî ASCII khäng goïi cuía 9 laì 0000 1001B = 09H
Maî ASCII goïi (chuáøn) cuía 59 laì 0101 1001B = 59H
Tæì âáy ta coï thãø ruït ra caïc bæåïc phaíi laìm âãø âäøi 2 säú åí
daûng maî ASCII sang daûng säú BCD chuáøn:
• Âäøi säú âáöu tiãn tæì maî ASCII ra säú BCD khäng goïi
• Âäøi säú thæï 2 tæì maî ASCII ra säú BCD khäng goïi
• Láúy 4 bit tháúp cuía säú âáöu gheïp våïi 4 bit tháúp cuía säú
sau taûo thaình 1 byte biãøu diãùn säú BCD goïi.
Âáy laì caïc cäng viãûc hay gàûp khi thao taïc våïi caïc säú trong
caïc hãû vi xæí lyï.