You are on page 1of 107

KiÕn tróc m¸y tÝnh

Ch−¬ng 2
BiÓu diÔn d÷ liÖu
& sè häc m¸y tÝnh

ThS Nguyễn Tường Thành -


10/8/2012 Trường Đại học Quy Nhơn 1
Néi dung bµi gi¶ng

 Ch−¬ng 1: Giíi thiÖu chung


 Ch−¬ng 2: BiÓu diÔn DL & sè häc m¸y tÝnh
 Ch−¬ng 3: Bé xö lý
 Ch−¬ng 4: KiÕn tróc RISC&kỹ thuật ống dẫn
 Ch−¬ng 5: HÖ thèng nhí
 Ch−¬ng 6: HÖ thèng vµo/ra,thiết bị ngoại vi
 Ch−¬ng 7: Ngăn xếp và chương trình con
2
Néi dung ch−¬ng 2

 C¸c hÖ ®Õm c¬ b¶n


 M· ho¸ vµ l−u tr÷ d÷ liÖu trong m¸y tÝnh
 BiÓu diÔn sè nguyªn
 C¸c phÐp to¸n sè häc ®èi víi sè nguyªn
 BiÓu diÔn sè thùc
 BiÓu diÔn ký tù.

3
C¸c hÖ ®Õm c¬ b¶n

 HÖ thËp ph©n (Decimal System)


→ Con ng−êi sö dông
 HÖ nhÞ ph©n (Binary System)
→ M¸y tÝnh sö dông
 HÖ thËp lôc ph©n (Hexadecimal System)
→ Dïng ®Ó viÕt gän sè nhÞ ph©n
 Bµi tËp

4
HÖ thËp ph©n (Decimal System)

 C¬ sè 10
 Dïng 10 ch÷ sè: 0, 1, 2, ..., 9
 Dïng n ch÷ sè thËp ph©n cã thÓ biÓu diÔn
®−îc 10n gi¸ trÞ kh¸c nhau:
• 00...0 = 0
• 99...9 = 10n – 1

5
VÝ dô

215.37 = 2*102 + 1*101 + 5*100 + 3*10-1 + 7*10-2


C¸c ch÷ sè phÇn nguyªn:
• 215 : 10 = 21 d− 5
• 21 : 10 = 2 d− 1
• 2 : 10 = 0 d− 2
C¸c ch÷ sè phÇn thËp ph©n:
• 0.37 * 10 = 3.7 phÇn nguyªn = 3
• 0.7 * 10 = 7.0 phÇn nguyªn = 7
6
HÖ nhÞ ph©n (Binary System)

 C¬ sè 2
 Dïng 2 ch÷ sè: 0, 1
 Ch÷ sè nhÞ ph©n gäi lµ bit (binary digit)
 Bit lµ ®¬n vÞ th«ng tin nhá nhÊt
 Dïng n ch÷ sè nhÞ ph©n cã thÓ biÓu diÔn ®−îc
2n gi¸ trÞ kh¸c nhau:
• 00...0 = 0
• 11...1 = 2n - 1
7
HÖ nhÞ ph©n (Binary System)

 D¹ng tæng qu¸t cña sè nhÞ ph©n:


• Gi¶ sö cã mét sè nhÞ ph©n A:
A = an an-1 ... a1 a0 , a-1 a-2 ... a-m

• Khi ®ã, gi¸ trÞ cña A ®−îc tÝnh nh− sau:


A = an*2n + an-1*2n-1 + ... + a0*20 +
+ a-1*2-1 + a-2*2-2 + ... + a-m*2-m

8
VÝ dô

Cã sè nhÞ ph©n nh− sau: 1011 1001.101(2)

Khi ®ã, gi¸ trÞ cña chóng ®−îc tÝnh lµ:


1011 1001.101(2) =
= 27 + 25 + 24 + 23 + 20 + 2-1 + 2-3
= 128 + 32 + 16 + 8 + 1 + 0.5 + 0.125
= 185.625(10)

9
ChuyÓn ®æi sè thËp ph©n → nhÞ ph©n

 ChuyÓn ®æi phÇn nguyªn:


• C¸ch 1: Chia liªn tiÕp cho 2 råi lÊy phÇn d−
• C¸ch 2: Ph©n tÝch thµnh tæng c¸c luü thõa cña 2

 ChuyÓn ®æi phÇn thËp ph©n:


• Nh©n phÇn thËp ph©n víi 2, lÊy phÇn nguyªn

10
VÝ dô chuyÓn ®æi

Cã sè ë hÖ thËp ph©n nh− sau: 61.3125


• ChuyÓn ®æi phÇn nguyªn: 61(10) = 111101(2)
• ChuyÓn ®æi phÇn thËp ph©n:
 0.3125 * 2 = 0.625 phÇn nguyªn = 0
 0.625 * 2 = 1.25 phÇn nguyªn = 1
 0.25 * 2 = 0.5 phÇn nguyªn = 0
 0.5 * 2 = 1.0 phÇn nguyªn = 1
• VËy: 61.3125(10) = 111101.0101(2)

11
HÖ thËp lôc ph©n (Hexadecimal System)

 C¬ sè 16
 Dïng 16 ch÷ sè: 0,1,..., 9, A, B, ..., F
 Dïng ®Ó viÕt gän cho sè nhÞ ph©n: cø mét
nhãm 4 bit sÏ ®−îc thay b»ng mét ch÷ sè
Hexa
 Dïng n ch÷ sè Hexa cã thÓ biÓu diÔn ®−îc
16n gi¸ trÞ kh¸c nhau:
• 00...0 = 0
• FF...F = 16n - 1
12
M· ho¸ & l−u tr÷ d÷ liÖu trong m¸y tÝnh

 M· ho¸ d÷ liÖu
 L−u tr÷ d÷ liÖu

13
M· ho¸ d÷ liÖu

 Nguyªn t¾c chung


• Mäi d÷ liÖu ®−a vµo m¸y tÝnh ®Òu ph¶i ®−îc m·
ho¸ thµnh sè nhÞ ph©n
• C¸c lo¹i d÷ liÖu:
 D÷ liÖu nh©n t¹o: do con ng−êi quy −íc
 D÷ liÖu tù nhiªn: tån t¹i kh¸ch quan víi con ng−êi

 M· ho¸ d÷ liÖu nh©n t¹o:


• D÷ liÖu d¹ng sè: m· ho¸ theo chuÈn quy −íc
• D÷ liÖu ký tù: m· ho¸ theo bé m· ký tù
14
M· ho¸ d÷ liÖu
 M· ho¸ vµ t¸i t¹o tÝn hiÖu tù nhiªn

TH Ltôc
TH V.lý Bé t¹o TH sè
tÝn hiÖu ADC

MT
TH V.lý TH Ltôc TH sè
Bé t¸i t¹o DAC
tÝn hiÖu

15
L−u tr÷ d÷ liÖu

 Bé nhí chÝnh ®−îc tæ chøc theo byte


 §é dµi d÷ liÖu cã thÓ chiÕm 1 hay nhiÒu byte
 Cã 2 c¸ch l−u tr÷ c¸c byte trong bé nhí
chÝnh:
• Little-endian (®Çu nhá): byte cã ý nghÜa thÊp h¬n
®−îc l−u tr÷ ë vÞ trÝ cã ®Þa chØ nhá h¬n
• Big-endian (®Çu to): byte cã ý nghÜa thÊp h¬n
®−îc l−u tr÷ ë vÞ trÝ cã ®Þa chØ lín h¬n

16
VÝ dô l−u tr÷ d÷ liÖu 32 bit
12 34 56 78

... §Þa chØ ... §Þa chØ


78 X 12 X
56 X +1 34 X +1
34 X+2 56 X+2
12 X+3 78 X+3
... ...
®Çu nhá ®Çu to

 VÝ dô: Intel 80x86, Px: ®Çu nhá


Motorola 680x0: ®Çu to
Power PC, Itanium: c¶ hai lo¹i
17
BiÓu diÔn sè nguyªn

 Sè nguyªn kh«ng dÊu (unsigned integer)


 Sè nguyªn cã dÊu (signed integer)
 ChuyÓn ®æi ®é dµi
 Biểu diễn số nguyên theo mã BCD
 Bµi tËp

18
Sè nguyªn kh«ng dÊu

 Nguyªn t¾c chung


• Dïng n ch÷ sè nhÞ ph©n th× biÓu diÔn ®−îc 2n sè
• D¶i biÓu diÔn: 0 ÷ 2n – 1
• VÝ dô:
 n = 8 bit: d¶i biÓu diÔn: 0 ÷ 28 -1, hay 0 ÷ 255
 n = 16 bit: d¶i biÓu diÔn: 0 ÷ 216 - 1, hay 0 ÷ 65535

 C¸ch biÓu diÔn


• BiÓu diÔn ë d¹ng nhÞ ph©n mét c¸ch b×nh th−êng

19
C¸c vÝ dô

 VÝ dô 1: biÓu diÔn c¸c sè nguyªn kh«ng dÊu


sau ®©y dïng 8 bit:
A = 73 ; B = 138
 Gi¶i:
• A = 73 = 64 + 8 + 1 = 26 + 23 + 20
73 = 0100 1001
• B = 138 = 128 + 8 + 2 = 27 + 23 + 21
138 = 1000 1010
20
C¸c vÝ dô

 VÝ dô 2: H·y x¸c ®Þnh gi¸ trÞ cña c¸c sè


nguyªn kh«ng dÊu C, D ®−îc biÓu diÔn b»ng
8 bit nh− sau:
C = 0010 1010; D = 1010 0110
 Gi¶i:
• C = 0010 1010 = 25 + 23 + 21 = 32 + 8 + 2 = 42
• D = 1010 0110 = 27 + 25 + 22 + 21 =
= 128 + 32 + 4 + 2 = 166
21
Sè nguyªn cã dÊu

 Nguyªn t¾c chung


• Dïng n ch÷ sè nhÞ ph©n th× biÓu diÔn ®−îc 2n sè
• D¶i biÓu diÔn: - 2n-1 ÷ 2n-1 – 1
• VÝ dô:
 n = 8 bit: d¶i biÓu diÔn: - 27 ÷ 27 -1, hay -128 ÷ 127
 n = 16 bit: - 215 ÷ 215 - 1, hay - 32768 ÷ 32767
 C¸ch biÓu diÔn:
• PP1: Dïng dÊu vµ ®é lín (Sign-Magnitude)
• PP2: Dïng m· bï 2 (Two’s complement)
22
Dïng dÊu vµ ®é lín

 Bit lín nhÊt biÓu diÔn dÊu:


• 0: biÓu diÔn sè d−¬ng
• 1: biÓu diÔn sè ©m
 C¸c bit cßn l¹i biÓu diÔn gi¸ trÞ
 VÝ dô:
• +23 = 0001 0111; -23 = 1001 0111
 VÊn ®Ò n¶y sinh
• CÇn quan t©m c¶ phÇn dÊu vµ phÇn ®é lín khi
thùc hiÖn c¸c phÐp to¸n sè häc
• Cã ®Õn 2 c¸ch biÓu diÔn cho sè 0 (+0 vµ -0)
23
Dïng m· bï 2

 §èi víi sè d−¬ng: biÓu diÔn d¹ng nhÞ ph©n


 §èi víi sè ©m: t×m sè bï 2:
• B1: ®æi sè d−¬ng t−¬ng øng → nhÞ ph©n
• B2: t×m sè bï 1 (®¶o bit 1 → 0, 0 → 1)
• B3: t×m sè bï 2: sè bï 1 céng víi 1
⇒ Sè bï 2 thu ®−îc chÝnh lµ c¸ch biÓu diÔn sè ©m

 §Æc ®iÓm:
• Thùc hiÖn c¸c phÐp to¸n sè häc dÔ dµng
• ChØ cã mét sù biÓu diÔn duy nhÊt cho sè 0
24
C¸c vÝ dô

 VÝ dô 1: BiÓu diÔn c¸c sè nguyªn cã dÊu sau


®©y b»ng 8 bit: A = + 69; B = - 92
 Gi¶i:
• A = + 69 = 0100 0101
• B = - 92 Ta cã: + 92 = 0101 1100
Sè bï 1 = 1010 0011
+
1
Sè bï 2 = 1010 0100
VËy: B = -92 = 1010 0100 25
C¸c vÝ dô

 VÝ dô 2: X¸c ®Þnh gi¸ trÞ cña c¸c sè nguyªn cã


dÊu biÓu diÔn d−íi ®©y (dïng dÊu - ®é lín):
C = 0110 1010; D = 1100 0011

 Gi¶i:
• C = 0110 1010 = + (64 + 32 + 8 + 2) = 106
• D = 1100 0011 = - 128+ 64 + 2 + 1 = - 61

26
C¸c vÝ dô

 VÝ dô 3: X¸c ®Þnh gi¸ trÞ cña c¸c sè nguyªn cã


dÊu ®−îc biÓu diÔn d−íi ®©y (dïng m· bï 2):
E = 0101 1110; F = 1101 1010

 Gi¶i:
• E = 0101 1110 = 64 + 16 + 8 + 4 + 2 = 94
• F = 1101 1010 = -128 + 64 + 16 + 8 + 2 = -38

27
ChuyÓn ®æi ®é dµi

 §èi víi sè d−¬ng: thªm/bít sè 0 ë phÝa tr−íc:


• +23 = 0001 0111 (8 bit)
• +23 = 0000 0000 0001 0111 (16 bit)

 §èi víi sè ©m: thªm/bít sè 1 ë phÝa tr−íc:


• -23 = 1110 1001 (8 bit)
• -23 = 1111 1111 1110 1001 (16 bit)

28
Biểu diễn số nguyên theo mã BCD

 Binary Coded Decimal Code


 Dùng 4 bit để mã hóa cho các chữ số thập phân từ 0
đến 9:
0  0000 5  0101
1  0001 6  0110
2  0010 7  0111
3  0011 8  1000
4  0100 9  1001
 Còn 6 tổ hợp không sử dụng:
1010, 1011, 1100, 1101, 1110, 1111 29
Biểu diễn số nguyên theo mã BCD

Ví dụ số BCD:
 35  0011 0101 BCD
 61  0110 0001BCD
 1087  0001 0000 1000 0111BCD
 9640  1001 0110 0100 0000BCD

30
Biểu diễn số nguyên theo mã BCD

 BCD không gói (Unpacked BCD): Mỗi số


BCD 4-bit được lưu trữ trong 4 bit thấp của
mỗi byte.
Ví dụ: số 35 được lưu trữ như sau:
0011 0101

 BCD gói (packed BCD): hai số BCD được lưu


trữ trong 1 byte.
Ví dụ: số 35 được lưu trữ như sau:
0011 0101
31
Biểu diễn số nguyên theo mã BCD
 Phép cộng số BCD:
35  0011 0101BCD
+ 61  0110 0001BCD
96  1001 0110BCD
87  1000 0111BCD
+ 96  1001 0110BCD
183 1 0001 1101  kết quả sai
+ 0110 0110  hiệu chỉnh
0001 1000 0011BCD  kết quả đúng
1 8 3
Hiệu chỉnh: cộng thêm 6 ở những vị trí có nhớ (>9)

32
C¸c phÐp to¸n sè häc

 PhÐp céng
 PhÐp trõ
 PhÐp nh©n
 PhÐp chia
 Bµi tËp

33
PhÐp céng (addition)

 Céng sè nguyªn kh«ng dÊu


 Céng sè nguyªn cã dÊu

34
Nguyªn t¾c

Tæng Nhí
A B
(Sum) (Carry)
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

35
Nguyªn t¾c

 Khi céng hai sè nguyªn kh«ng dÊu n bit:


• NÕu kh«ng cã nhí ra khái bit cao nhÊt th× tæng
lu«n ®óng (Cout = 0)
• NÕu cã nhí ra ngoµi (Carry out) th× tæng lµ sai
(Cout = 1), ta nãi r»ng phÐp céng ®· trµn nhí
• Trµn nhí ra ngoµi x¶y ra khi tæng > 2n - 1

36
VÝ dô

 VÝ dô 1:
71 = 0100 0111
+ +
25 = 0001 1001
96 0110 0000 = 64 + 32 = 96 → ®óng
 VÝ dô 2:
251 = 1111 1011
+ +
16 = 0001 0000
267 1 0000 1011 = 8 + 2 + 1 = 11 → sai
37
Nguyªn t¾c

 Khi céng hai sè nguyªn cã dÊu n bit, kh«ng


quan t©m ®Õn bit nhí ra ngoµi (Cout), kÕt qu¶
nhËn ®−îc lµ n bit:
• NÕu céng hai sè kh¸c dÊu, tæng thu ®−îc lu«n
lu«n ®óng
• Céng hai sè cïng dÊu, nÕu tæng cïng dÊu víi
c¸c sè h¹ng th× tæng ®ã ®óng
• Céng hai sè cïng dÊu, nÕu tæng ng−îc dÊu víi
c¸c sè h¹ng th× tæng ®ã sai, ta nãi tæng bÞ trµn
(Overflow)
38
VÝ dô

 VÝ dô 1 (céng hai sè kh¸c dÊu → tæng ®óng):


-71 = 1011 1001 (+71 = 0100 0111)
+ +
+25 = 0001 1001

-46 1101 0010 = -46 → ®óng

 VÝ dô 2 (céng hai sè ©m → tæng ®óng):


-51 = 1100 1101 (+51= 0011 0011)
+ +
-16 = 1111 0000 (+16 = 0001 0000)

-67 1 1011 1101 = -67 → ®óng


39
VÝ dô

 VÝ dô 3 (céng hai sè d−¬ng → tæng ®óng):


+71 = 0100 0111
+ +
+25 = 0001 1001
+96 0110 0000 = +96 → ®óng
 VÝ dô 4 (céng hai sè ©m → tæng sai):
-97 = 1001 1111 (+97= 0110 0001)
+ +
-89 = 1010 0111 (+89 = 0101 1001)

-186 1 0100 0110 = +72 → sai


40
VÝ dô

 VÝ dô 5 (céng hai sè d−¬ng → tæng sai):


0101 0111
+87 =
+ +
+84 = 0101 0100

+171 1010 1011 = -85 → sai


Cả hai ví dụ đều tràn vì tổng nằm ngoài dải
biểu diễn [ -128,+127] hoặc tổng quát hơn
tràn xảy ra khi nằm ngoài dải biểu diễn:
[ - ( 2n-1 ), + (2n-1 -1)]

41
PhÐp trõ (subtraction)

 Ta cã: Nguyên tắc lấy bù hai của B để được –B


rồi cộng với A. A – B = A + (-B)

Thanh ghi A Thanh ghi B

M¹ch bï 2

Bé céng n - bit OF

42
PhÐp nh©n (Multiplication)

 Nh©n sè nguyªn kh«ng dÊu


 Nh©n sè nguyªn cã dÊu

43
VÝ dô

1100 Sè bÞ nh©n (12)


×
1011 Sè nh©n (11)
1100 C¸c
+
1100 tÝch
0000 thµnh
1100 phÇn
10000100 TÝch (132)

44
Nguyªn t¾c thùc hiÖn phÐp nh©n

 C¸c tÝch thµnh phÇn ®−îc tÝnh nh− sau:


• NÕu bit t−¬ng øng cña sè nh©n b»ng 0 → tÝch
thµnh phÇn b»ng 0
• NÕu bit t−¬ng øng cña sè nh©n b»ng 1 → tÝch
thµnh phÇn b»ng sè bÞ nh©n
• TÝch thµnh phÇn tiÕp theo ®−îc dÞch tr¸i 1 bit so
víi tÝch tr−íc ®ã
 Tæng c¸c tÝch thµnh phÇn lµ TÝch cuèi cïng
 Nh©n hai sè n bit, tÝch cã ®é dµi 2n bit
45
S¬ ®å m¹ch nh©n
Sè bÞ nh©n
Mn-1 . . . M0

Céng Logic ®iÒu khiÓn


Bé céng n bit dÞch vµ céng
DÞch ph¶i

C An-1 . . . A0 Qn-1 . . . Q0
Sè nh©n

46
S¬ ®å khèi thùc hiÖn phÐp nh©n
Start

C:=0; A:=0; Bé ®Õm:=n


M chøa sè bÞ nh©n
Q chøa sè nh©n

§óng
Q0 = 1?
Sai

C,A:=A+M

DÞch ph¶i C, A, Q
Dec(Bé ®Õm)

Sai §óng TÝch chøa


Bé ®Õm = 0? End
trong A,Q
47
DiÔn gi¶i vÝ dô (12 x 11 = 132)
C A Q (SN) M (SBN)
0 0000 1011 1100 Gi¸ trÞ khëi t¹o n=4

0 1100 1011 1100 C, A← A+M


LÇn thø nhÊt
0 0110 0101 1100 SHR C, A, Q n=3

1 0010 0101 1100 C, A← A+M


LÇn thø hai
0 1001 0010 1100 SHR C, A, Q n=2

0 0100 1001 1100 SHR C, A, Q LÇn thø ba


n=1
1 0000 1001 1100 C, A← A+M LÇn thø t− n=0
0 1000 0100 1100 SHR C, A, Q TÝch chøa trong A,Q
48
Nh©n sè nguyªn cã dÊu

 Kh«ng thùc hiÖn trùc tiÕp ®−îc trong m¸y tÝnh


 Gi¶i ph¸p 1:
• ChuyÓn ®æi thµnh sè d−¬ng nÕu cÇn
• Thùc hiÖn nh©n nh− ®èi víi sè kh«ng dÊu
• NÕu hai sè kh¸c dÊu → tÝch lµ sè ©m
 Gi¶i ph¸p 2:
• Dïng thuËt to¸n Booth (nhanh h¬n)

49
ThuËt to¸n Booth
Start

A:=0; Q-1:=0; Bé ®Õm:=n


M chøa sè bÞ nh©n
Q chøa sè nh©n

= 10 = 01
Q0, Q-1

= 11
A := A - M = 00 A := A + M

DÞch ph¶i A, Q, Q-1


Dec(Bé ®Õm)
L−u ý: An-1 ®−îc t¸i t¹o

Sai §óng
Bé ®Õm = 0? End TÝch chøa
trong A,Q
50
VÝ dô 1: (-7) x 3 = -21
A Q (SN) Q-1 M (SBN)
0000 0011 0 1001 Gi¸ trÞ khëi t¹o n=4

0111 0011 0 1001 A← A – M


LÇn thø nhÊt
0011 1001 1 1001 SHR A, Q, Q-1 n=3

0001 1100 1 1001 SHR A, Q, Q-1 LÇn thø hai


n=2
1010 1100 1 1001 A← A + M
LÇn thø ba
1101 0110 0 1001 SHR A, Q, Q-1 n=1

1110 1011 0 1001 SHR A, Q, Q-1 LÇn thø t− n=0


TÝch chøa trong A,Q
51
VÝ dô 2: (-5) x (-6) = +30
A Q (SN) Q-1 M (SBN)
0000 1010 0 1011 Gi¸ trÞ khëi t¹o n=4

0000 0101 0 1011 SHR A, Q, Q-1 LÇn thø nhÊt


n=3
0101 0101 0 1011 A← A – M
LÇn thø hai
0010 1010 1 1011 SHR A, Q, Q-1 n=2

1101 1010 1 1011 A← A + M


LÇn thø ba
1110 1101 0 1011 SHR A, Q, Q-1 n=1

0011 1101 0 1011 A← A – M LÇn thø t− n=0


0001 1110 1 1011 SHR A, Q, Q-1 TÝch chøa trong A,Q
52
VÝ dô:

 138 : 12 = 11, d− 6
(138) (12)
Sè bÞ chia 10001010 1100 Sè chia
1100 1011 Th−¬ng
010101 (11)
C¸c sè d− 1100
thµnh phÇn
10010
1100
0110 Sè d−
(6) 53
ThuËt to¸n thùc hiÖn phÐp chia
Bé ®Õm := n
Start M chøa sè chia (n bit)
A,Q chøa sè bÞ chia (2n bit)

DÞch tr¸i A,Q ®i 1 bit


B := A

§óng Sai
M, A cïng dÊu?

A := A - M A := A + M

§óng A, B cïng dÊu Sai


hoÆc A = Q = 0?

Q0 = 1 Q0 = 0; A := B

Dec(Bé ®Õm)
A chøa sè d−
Sai §óng Q chøa th−¬ng sè (M, (A,Q) cïng dÊu)
Bé ®Õm = 0? End Q chøa bï 2 cña th−¬ng sè
(M, (A,Q) kh¸c dÊu) 54
VÝ dô 1: 12 : 4 = 3, d− 0
A Q M = 0100 (sè chia)
0000 1100 Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia cïng dÊu)
0001 1000 DÞch tr¸i 1 bit A, Q
1101 M cïng dÊu A → A := A - M
0001 1000 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A
0011 0000 DÞch tr¸i 1 bit A, Q
1111 M cïng dÊu A → A := A - M
0011 0000 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A
0110 0000 DÞch tr¸i 1 bit A, Q
0010 M cïng dÊu A → A := A - M
0010 0001 A cïng dÊu sau khi trõ → Q0 = 1
0100 0010 DÞch tr¸i 1 bit A, Q
0000 M cïng dÊu A → A := A – M
0000 0011 A cïng dÊu sau khi trõ → Q0 = 1. A chøa d−, Q chøa th−¬ng
55
 8. Chia số nguyên có dấu

 Bước 1. Chuyển đổi số bị chia và số chia về thành số

dương tương ứng.


Bước 2. Sử dụng thuật giải chia số nguyên không dấu để
chia hai số dương, kết quả nhận được là thương Q và
phần dư R đều là dương
Bước 3. Hiệu chỉnh dấu của kết quả như sau:
(Lưu ý: phép đảo dấu thực chất là thực hiện phép lấy bù hai)
Số bị chia Số chia Thương Số dư
dương dương giữ nguyên giữ nguyên
dương âm đảo dấu giữ nguyên
âm dương đảo dấu đảo dấu
âm âm giữ nguyên đảo dấu

56
VÝ dô 2: 13 : (-4) = -3, d− 1
A Q M = 1100 (sè chia)
0000 1101 Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia kh¸c dÊu)
0001 1010 DÞch tr¸i 1 bit A, Q
1101 M kh¸c dÊu A → A := A + M
0001 1010 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A
0011 0100 DÞch tr¸i 1 bit A, Q
1111 M kh¸c dÊu A → A := A + M
0011 0100 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A
0110 1000 DÞch tr¸i 1 bit A, Q
0010 M kh¸c dÊu A → A := A + M
0010 1001 A cïng dÊu sau khi céng → Q0 = 1
0101 0010 DÞch tr¸i 1 bit A, Q
0001 M kh¸c dÊu A → A := A + M
0001 0011 A cïng dÊu sau khi céng → Q0=1. A chøa d−, Q chøa bï 2 cña th−¬ng
57
VÝ dô 3: (-11) : 3 = (-3), d− (-2)
A Q M = 0011 (sè chia)
1111 0101 Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia kh¸c dÊu)
1110 1010 DÞch tr¸i 1 bit A, Q
0001 M kh¸c dÊu A → A := A + M
1110 1010 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A
1101 0100 DÞch tr¸i 1 bit A, Q
0000 M kh¸c dÊu A → A := A + M
1101 0100 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A
1010 1000 DÞch tr¸i 1 bit A, Q
1101 M kh¸c dÊu A → A := A + M
1101 1001 A cïng dÊu sau khi céng → Q0 = 1
1011 0010 DÞch tr¸i 1 bit A, Q
1110 M kh¸c dÊu A → A := A + M
1110 0011 A cïng dÊu sau khi céng → Q0=1. A chøa d−, Q chøa bï 2 cña th−¬ng
58
VÝ dô 4: (-14) : (-6) = 2, d− (-2)
A Q M = 1010 (sè chia)
1111 0010 Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia cïng dÊu)
1110 0100 DÞch tr¸i 1 bit A, Q
0100 M cïng dÊu A → A := A - M
1110 0100 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A
1100 1000 DÞch tr¸i 1 bit A, Q
0010 M cïng dÊu A → A := A - M
1100 1000 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A
1001 0000 DÞch tr¸i 1 bit A, Q
1111 M cïng dÊu A → A := A + M
1111 0001 A cïng dÊu sau khi céng → Q0 = 1
1110 0010 DÞch tr¸i 1 bit A, Q
0100 M cïng dÊu A → A := A - M
1110 0010 A kh¸c dÊu sau khi céng → Q0= 0. A chøa d−, Q chøa cña th−¬ng
59
BiÓu diÔn sè thùc

 Nguyªn t¾c chung


 ChuÈn IEEE 754/85
 Bµi tËp

60
Nguyªn t¾c chung

 Mét sè thùc X cã thÓ biÓu diÔn nh− sau:


X = (-1)S * M * RE
Trong ®ã:
• S (sign): dÊu (0: sè d−¬ng; 1: sè ©m)
• M (mantissa): phÇn ®Þnh trÞ
• R (radix): c¬ sè
• E (exponent): sè mò

61
Số dấu chấm động

 Một giá trị có thể biểu diễn dưới nhiều


dạng
• Khó xử lý
• Cần chuẩn hóa
VÝ dô

 X = -1234.567 = (-1)1 * 1234567 * 10-3


• S = 1; M = 1234567
• R = 10; E = -3

 X = 0.13579 = (-1)0 * 13579 * 10-5


• S = 0; M = 13579;
• R = 10; E = -5

63
C¸c phÐp to¸n sè häc

X1 = (-1)S1 * M1 * RE1
X2 = (-1)S2 * M2 * RE2
 PhÐp nh©n:
X1 * X2 = (-1)S1⊕S2 * (M1*M2) * RE1 + E2
 PhÐp chia:
X1 / X2 = (-1)S1⊕S2 * (M1/M2) * RE1 - E2
 PhÐp céng / trõ:
X1 ± X2 = RE1*[(-1)S1*M1 ± (-1)S2 * M2*RE2 - E1]
64
ChuÈn IEEE 754/85

 Cã 3 d¹ng:
• D¹ng ®¬n (single precision): 32 bit
• D¹ng kÐp (double precision): 64 bit
• D¹ng kÐp më réng (double-extended precision):
80 bit
 C¶ 3 d¹ng ®Òu cã ®iÓm chung: R = 2

65
66
D¹ng ®¬n: 32 bit
31 30 23 22 0

S (dÊu) E (phÇn mò) M (phÇn ®Þnh trÞ)

1 bit 8 bit 23 bit

 Khi ®ã, 1 sè thùc bÊt kú ®−îc biÓu diÔn:


X = (-1)S * 1,M * 2E – 127
 D¶i gi¸ trÞ biÓu diÔn:
2-127 < X < 2127,
hay: 10-38 < X < 1038
67
ChuyÓn ®æi → IEEE 754/85 (32 bit)

 B−íc 1: §æi sè thùc ®ã → nhÞ ph©n


 B−íc 2: ChuyÓn vÒ d¹ng: ±1,aa...a * 2b
 B−íc 3: X¸c ®Þnh c¸c gi¸ trÞ:
• S = 0 nÕu sè d−¬ng; S = 1 nÕu sè ©m
• E – 127 = b ⇒ E = 127 + b → nhÞ ph©n
• M = aa...a00...0
23 bit
68
VÝ dô chuyÓn ®æi

 VÝ dô 1: 17,625 → IEEE 754/85


• B1: A = 17,625 = 10001,101
• B2: A = 1,0001101 * 24 (±1,aa...a * 2b)
• B3: Ta cã:
 S = 0, v× A > 0
 E – 127 = 4 ⇒ E = 131 = 1000 0011
 M = 000 1101 0000 0000 0000 0000

⇒ A = 0100 0001 1000 1101 0000 0000 0000 0000


= 41 8D 00 00H
69
VÝ dô chuyÓn ®æi

 VÝ dô 2: -112,3125 → IEEE 754/85


• B1: B = -112,3125 = -1110000,0101
• B2: B = -1,1100000101 * 26 (±1,aa...a * 2b)
• B3: Ta cã:
 S = 1, v× B < 0
 E – 127 = 6 ⇒ E = 133 = 1000 0101
 M = 110 0000 1010 0000 0000 0000

⇒ A = 1100 0010 1110 0000 1010 0000 0000 0000


= C2 E0 A0 00H
70
VÝ dô chuyÓn ®æi

 VÝ dô 3: -19 / 64 → IEEE 754/85


• B1: C = -19 / 64 = -19 * (1 / 64)
• B2: C = -10011 * 2-6 = -1,0011 * 2-2
• B3: Ta cã:
 S = 1, v× C < 0
 E – 127 = -2 ⇒ E = 125 = 0111 1100
 M = 001 1000 0000 0000 0000 0000

⇒ A = 1011 1110 0001 1000 0000 0000 0000 0000


= BE 18 00 00H
71
VÝ dô chuyÓn ®æi

 VÝ dô 4: T×m gi¸ trÞ sè thùc: C2 0D 00 00H


 Gi¶i:
Ta cã: X = C2 0D 00 00H =
= 1100 0010 0000 1101 0000 0000 0000 0000
• S=1⇒X<0
• E = 1000 0100 = 132 ⇒ E -127 = 5
• M = 000 1101 0000 0000 0000 0000
⇒ X = -1,0001101 * 25 = -100011,01 = -35,25
72
D¹ng kÐp: 64 bit
63 62 52 51 0

S (dÊu) E (phÇn mò) M (phÇn ®Þnh trÞ)

1 bit 11 bit 52 bit

 Khi ®ã, 1 sè thùc bÊt kú ®−îc biÓu diÔn:


X = (-1)S * 1,M * 2E – 1023
 D¶i gi¸ trÞ biÓu diÔn:
2-1023 < X < 21023,
hay: 10-308 < X < 10308
73
D¹ng kÐp më réng: 80 bit
79 78 64 63 0

S (dÊu) E (phÇn mò) M (phÇn ®Þnh trÞ)

1 bit 15 bit 64 bit

 Khi ®ã, 1 sè thùc bÊt kú ®−îc biÓu diÔn:


X = (-1)S * 1,M * 2E – 16383
 D¶i gi¸ trÞ biÓu diÔn:
2-16383 < X < 216383,
hay: 10-4932 < X < 104932
74
C¸c quy −íc ®Æc biÖt

 E = 0, M = 0 → X = 0
x000 0000 0000 0000 0000 0000 0000 0000 = ±0

 E = 11...1, M = 0 → X = ±∞
x111 1111 1000 0000 0000 0000 0000 0000 = ±∞

 E = 11...1, M ≠ 0 → X: NaN (kh«ng ph¶i sè)

75
Các quy ước đặc biệt

 Các bit của e bằng 0, các bit của m bằng 0, thì X= ± 0


• x000 0000 0000 0000 0000 0000 0000 0000  X= ±
0
 Các bit của e bằng 1, các bit của m bằng 0, thì X= ± ∞
• x111 1111 1000 0000 0000 0000 0000 0000  X= ±

 Các bit của e bằng 1, còn m có ít nhất 1 bit bằng 1, thì
nó không biểu diễn cho số nào cả (NaN – not a number)
Các khả năng tràn số
 Tràn trên số mũ (Exponent Overflow): mũ dương
vượt ra khỏi giá trị cực đại của số mũ dương có thể. (
∞)
Tràn dưới số mũ (Exponent Underflow): mũ âm
vượt ra khỏi giá trị cực đại của số mũ âm có thể
( 0).
Tràn trên phần định trị (Mantissa Overflow):
cộng hai phần định trị có cùng dấu, kết quả bị
nhớ ra ngoài bit cao nhất.
Tràn dưới phần định trị (Mantissa Underflow):
Khi hiệu chỉnh phần định trị, các số bị mất ở bên
phải phần định trị.
77
Thực hiện phép toán số dấu phẩy động

 X1 = M1 * RE1
 X2 = M2 * RE2
 Ta có
 X1 * X2 = (M1* M2) * RE1+E2
 X1 / X2 = (M1 / M2) * RE1-E2
 X1 ± X2 = (M1*RE1-E2 ± M2) * RE2
, với E2 ≥ E1

78
Phép cộng và phép trừ

 Kiểm tra các số hạng có bằng 0 hay


không
 Hiệu chỉnh phần định trị (so sánh bậc
của E1 và E2), cân bằng bậc
 Cộng hoặc trừ phần định trị
 Chuẩn hoá kết quả (nếu cần)

79
Thuật toán cộng/trừ số dấu phẩy động

80
Thuật toán nhân số dấu phẩy động

81
Thuật toán chia số dấu phẩy động

82
BiÓu diÔn ký tù

 Bé m· ASCII (American Standard Code for


Information Interchange)
 Bé m· Unicode

83
Bé m· ASCII

 Do ANSI (American National Standard


Institute) thiÕt kÕ
 Lµ bé m· 8 bit, cã thÓ m· hãa ®−îc 28 ký tù,
cã m· tõ 0016 ÷ FF16 , gåm:
• 128 ký tù chuÈn, cã m· 0016 ÷ 7F16, gåm:
 C¸c ký tù ®iÒu khiÓn: mµn h×nh, m¸y tin, truyÒn tin.
 C¸c ký tù so¹n th¶o v¨n b¶n

• 128 ký tù më réng, cã m· 8016 ÷ FF16, gåm:


 C¸c ký tù ®Æc biÖt, kÎ khung, tiÕng Ph¸p, ...
84
Bé m· Unicode

 Lµ bé m· hîp nhÊt, do c¸c h·ng m¸y tÝnh


hµng ®Çu thiÕt kÕ
 Lµ bé m· 16 bit
 Lµ bé m· ®a ng«n ng÷
 Cã hç trî c¸c ký tù tiÕng ViÖt

85
Các ký tự chuẩn
Các ký tự hiển thị chuẩn:
 Các chữ cái Latin
 Các chữ số thập phân
 Các dấu câu: . , : ; ...
 các dấu phép toán: + - * / % ...
 một số ký hiệu thông dụng: &, $,@, #
 dấu cách
Các mã điều khiển
 Các mã điều khiển định dạng văn bản
 Các mã điều khiển truyền số liệu
 Các mã điều khiển phân tách thông tin
 Các mã điều khiển khác
86
87
Các ký tự hiển thị chuẩn

88
Các ký tự hiển thị chuẩn (tiếp)

89
Các ký tự hiển thị chuẩn (tiếp)

90
Các mã điều khiển: có mã 0016 ÷ 1F16 và 7F16

91
Các mã điều khiển (tiếp)

92
Các mã điều khiển (tiếp)

93
Các mã điều khiển (tiếp)

94
Các ký tự mở rộng

 Các ký tự mở rộng được định nghĩa


bởi:
 nhà chế tạo máy tính
 người phát triển phần mềm.
Ví dụ:
 Bộ mã ký tự mở rộng của IBM
 Bộ mã ký tự mở rộng của Apple
Macintosh.
 Bộ mã tiếng Việt TCVN3. 95
Bộ mã hợp nhất: Unicode

Do các hãng máy tính hàng đầu thiết kế


 Bộ mã 16-bit
 Bộ mã đa ngôn ngữ
 Có hỗ trợ các ký tự tiếng Việt

96
KiÕn tróc m¸y tÝnh

HÕt ch−¬ng 2

ThS Nguyễn Tường Thành -


10/8/2012 Trường Đại học Quy Nhơn 97
Bµi tËp (c¸c hÖ ®Õm)

 Bµi 1: §æi c¸c sè sau tõ hÖ thËp ph©n → hÖ


nhÞ ph©n:
a) 28; b) 89; c) 294
d) 34,5; e) 55,25; f) 46,3125
 Bµi 2: §æi c¸c sè sau tõ hÖ nhÞ ph©n → hÖ
thËp ph©n:
a) 11001; b) 111001
c) 10111011; d) 10001001
98
Bµi tËp (c¸c hÖ ®Õm)

 Bµi 3: §æi c¸c sè sau tõ hÖ thËp ph©n → hÖ


thËp lôc:
a) 68; b) 29; c) 215
 Bµi 4: §æi c¸c sè sau tõ hÖ thËp lôc → hÖ
thËp ph©n:
a) AF; b) 123; c) 10D

99
Bµi tËp (biÓu diÔn sè nguyªn)

 Bµi 1: BiÓu diÔn c¸c sè sau dïng dÊu vµ ®é


lín (8 bit):
a) +69; b) +105; c) -28; d) -121
 Bµi 2: BiÓu diÔn c¸c sè sau dïng dÊu vµ ®é
lín (16 bit):
a) +109; b) +105; c) -98; d) -131
 Bµi 3: BiÓu diÔn c¸c sè sau dïng m· bï 2
(8 bit – kh«ng dÊu):
a) 57; b) 48; c) 98; d) 131 100
Bµi tËp (biÓu diÔn sè nguyªn)

 Bµi 4: BiÓu diÔn c¸c sè sau dïng m· bï 2


(8 bit – cã dÊu):
a) +57; b) +48; c) -98; d) -31
 Bµi 5: BiÓu diÔn c¸c sè sau dïng m· bï 2
(16 bit – kh«ng dÊu):
a) 157; b) 108; c) 128; d) 35
 Bµi 6: BiÓu diÔn c¸c sè sau dïng m· bï 2
(16 bit – cã dÊu):
a) 137; b) 119; c) -113; d) -53 101
Bµi tËp (biÓu diÔn sè nguyªn)

 Bµi 7: Cã c¸c biÓu diÔn sau (dïng dÊu vµ ®é


lín), h·y x¸c ®Þnh gi¸ trÞ cña chóng:
a) 0100 1011 b) 1001 1100
c) 0000 0000 1001 0010; d) 1000 0000 0110 1100
 Bµi 8: Cã c¸c biÓu diÔn sau (dïng m· bï 2 –
kh«ng dÊu), h·y x¸c ®Þnh gi¸ trÞ:
a) 0100 0011 b) 1010 0100
c) 0000 0000 1001 0010; d) 1000 0000 0010 0100

102
Bµi tËp (biÓu diÔn sè nguyªn)

 Bµi 9: Cã c¸c biÓu diÔn sau (dïng m· bï 2 –


cã dÊu), h·y x¸c ®Þnh gi¸ trÞ cña chóng:
a) 0100 1011 b) 1101 1100
c) 0000 0000 0101 0011; d) 1111 1111 1110 1110

103
Bµi tËp (c¸c phÐp to¸n víi sè nguyªn)

 Bµi 1: Cho biÕt kÕt qu¶ khi thùc hiÖn trªn m¸y
tÝnh c¸c phÐp céng sau (8 bit) vµ gi¶i thÝch:
• a) 56 + 78 (kh«ng dÊu); b) 121 + 40 (kh«ng dÊu)
• c) 68 + 40 (cã dÊu) ; d) 67 + (-100) (cã dÊu)
• e) 102 + 88 (cã dÊu); f) (-80) + (-62) (cã dÊu)
 Bµi 2: M« t¶ qu¸ tr×nh nh©n trªn m¸y tÝnh c¸c
sè 4 bit sau ®©y:
• a) 13 * 7; b) 6 * 14; c) 15 * 14
• d) (-5) * 3; e) 6 * (-2); f) (-7) * (-4) 104
Bµi tËp (c¸c phÐp to¸n víi sè nguyªn)

 Bµi 3: M« t¶ qu¸ tr×nh chia trªn m¸y tÝnh c¸c


sè sau ®©y:
• a) 13 : 5; b) 10 : (-4)
• c) (-11) : 6; d) (-14) : (-5)

105
Bµi tËp (biÓu diÔn sè thùc)

 Bµi 1: BiÓu diÔn c¸c sè sau theo chuÈn IEEE


754/85 32 bit:
a) 78,25; b) -23,625; c) 50,3125
d) -133/128 e) 20,15
 Bµi 2: Cã c¸c biÓu diÔn theo chuÈn IEEE
754/85 sau, x¸c ®Þnh gi¸ trÞ cña chóng:
a) 41 8D 00 00H; b) C2 96 20 00H
c) 3E A0 00 00H; d) BC 91 00 00H
106
Bµi tËp (biÓu diÔn sè thùc)

 Bµi 3: Cã c¸c biÓu diÔn theo chuÈn IEEE


754/85 sau, x¸c ®Þnh gi¸ trÞ cña chóng:
a) 10 00 00 00H; b) 7F 80 00 00H
c) FF 80 00 00H; d) 7F 80 00 10H

107

You might also like