Ki n trúc máy tính

ế

Ch

ươ

ng 2: Bi u di n thông tin ễ

trong máy tính

THS. Lê Văn Hùng – Khoa HTTTKT – H c vi n Ngân hàng

ệ ố

ư ố

 2.1. Các h th ng s ố  2.2. Mã hoá và l u tr d li u trong máy tính ữ ữ ệ  2.3. Bi u di n s nguyên ễ  2.4. Th c hi n các phép toán s h c v i s ớ ố ệ

ố ọ

ể ự nguyên

 2.5. S d u ch m đ ng ố ấ  2.6. Bi u di n ký t ể

BI U DI N D LI U VÀ Ữ Ệ S H C MÁY TÍNH Ể Ố Ọ

 H th p phân (Decimal System) i s d ng

ệ ậ  Con ng

 Máy tính s d ng

ườ ử ụ  H nh phân (Binary System) ử ụ

ệ ậ ụ  Dùng đ vi

 H th p l c phân (Hexadecimal System) t g n s nh phân ể ế ọ ố  H bát phân (Octal System)

2.1. Các h th ng s ệ ố ố

H th p phân ệ ậ

 C s 10 ơ ố

 10 ch s : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

ữ ố

 Dùng n ch s th p phân có th bi u di n

ể ể

n giá tr khác nhau:

ữ ố ậ ị

ượ

đ c 10  00...000 = 0  99...999 = 10n - 1

H th p phân ệ ậ

 472.38 = 4x102 + 7x101 + 2x100 + 3x10-1 +

8x10-2

 Các ch s c a ph n nguyên:

ữ ố ủ

 472 : 10 = 47 d 2ư  47 : 10 = 4 d 7ư  4 : 10 = 0 d 4ư  Các ch s c a ph n l ữ ố ủ

: ầ ẻ

 0.38 x 10 = 3.8 ph n nguyên = 3  0.8 x 10 = 8.0 ph n nguyên = 8

H th p phân ệ ậ

H nh phân ị ệ

 C s 2 ơ ố

ữ ố

ữ ố

H nh phân ị ệ

 2 ch s nh phân: 0 và 1 ị bit (binary digit)  Ch s nh phân g i là ị ỏ

ơ

 Bit là đ n v thông tin nh nh t ấ  Dùng n bit có th bi u di n đ

c 2

ể ể

ượ

n giá tr ị

khác nhau:  00...000 = 0  11...111 = 2n-1

 Có m t s nh phân A nh sau: ị

ộ ố

ư

A = anan-1...a1a0.a-1...a-m

 Giá tr c a A đ

c tính nh sau:

ị ủ

ượ

ư

A = an2n + an-12n-1 +...+ a020 + a-12-1 +...+ a-m2-m

 Ví d : ụ

H nh phân ị ệ

1101001.1 0 1 1(2) 6543210-1-2-3-4 = 26 + 25 + 23 + 20 + 2-1 + 2-3 + 2-4 = 64 + 32 + 8 + 1 + 0.5 + 0.125 + 0.0625 = 105.6875(10)

H bát phân ệ

H th p l c phân ệ ậ ụ

T ng quát ổ

Chuy n đ i các h s ổ ệ ố ể

Chuy n đ i các h s ổ ệ ố ể

Ph ươ ng pháp chuy n đ i ổ ể

Ph ươ ng pháp chuy n đ i ổ ể

Bi u di n thông tin trong h nh phân ị

ể ệ

 BIT (BInary digiT) :

 BYTE = t

 WORD = t

0 1 h p 8 bit : ổ ợ 01001101 11111111 h p nhi u bit : ề ổ ợ 10110 1011100101  1 KiloByte (KB) = 1024 byte  1 MegaByte (MB) = 1024 KB  1 GigaByte (GB) = 1024 MB

ữ ữ ệ

 Nguyên t c chung v mã hoá d li u  M i d li u đ a vào máy tính đ u đ

c mã hoá

ắ ọ ữ ệ

ữ ệ ượ

ư

 D li u nhân t o: do con ng

i quy

c

thành s nh phân ố  Các lo i d li u ạ ữ ệ ạ

ữ ệ

ườ

ướ

ộ ố

c ướ

ố ấ

: mã hoá theo b mã ký t

ố ố ự ự

ự i khách quan v i con ng

nhiên: t n t

i

 D li u s nguyên: mã hoá theo m t s chu n qui ữ ệ  D li u s th c: mã hoá b ng s d u ch m đ ng ữ ệ  D li u ký t ữ ệ  D li u t ữ ệ ự

ồ ạ

ườ

2.2 Mã hoá và l u tr d li u ư trong máy tính

Mã hóa thông tin đ u vào ầ

Mã hóa thông tin đ u vào ầ

l u tr các byte ữ

ườ

c t ng đ ượ ổ d li u có th chi m t ế ể

ch c theo byte ứ m t đ n ừ ộ ế

 B nh chính th ộ ớ  Đ dài t ừ ữ ệ ộ ề ầ

Th t ứ ự ư c a d li u ữ ệ ủ

nhi u byte ⇒ c n ph i bi

ế

l u tr các byte trong b nh ớ

t th t ứ ự ư chính v i các d li u nhi u byte. ữ ệ

ả ớ

l u tr các byte ữ

ư

c l u tr

ư

ượ ư c l u tr

ữ ở ngăn

ỏ ơ

ữ ở

ượ ư

 Có 2 cách l u tr : ữ ỏ ị ỉ ớ

 L u tr đ u nh (Little-endian): Byte th p đ ấ ngăn nh có đ a ch nh h n, byte cao đ ỉ nh có đ a ch l n h n. ơ

ư

ượ ư c l u tr

ượ ư

ỏ ơ

c l u tr ữ ở

ngăn ữ ở ngăn nh ớ

ữ ầ ớ ị  L u tr đ u to (Big-endian): Byte cao đ ữ ầ nh có đ a ch nh h n, byte th p đ ị có đ a ch l n h n. ỉ ớ

ơ

Little-endian

Big-endian

 Intel 80x86 và các Pentium  Motorola 680x0 và các b x lý RISC  Power PC và Itanium

⇒ ộ ử c hai

⇒ ả

Th t ứ ự ư c a d li u ữ ệ ủ

 Có hai lo i s nguyên:

ạ ố

ố ố

 S nguyên không d u (Unsigned Integer) ấ  S nguyên có d u (Signed Integer) ấ  Bi u di n s nguyên không d u ấ

 Dùng n bit bi u di n s nguyên không d u A:

2.3 Bi u di n s nguyên ễ ố ể

ễ an-1an-2…..a2a1a0

n

1

i

=

A

2

-

ư

ia

=

0

i

c tính nh sau: 0 -:- 2n-1

 Giá tr c a A đ ị ủ  D i bi u di n c a A: ể

ượ ủ

 S 8 bit có giá tr : 0 ÷ 255  S 16 bit có giá tr : 0 ÷ 65 535 ị  S 32 bit có giá tr : 0 ÷ 4 294 967 295 ị

ố ố ố

(cid:229)

Bi u di n s nguyên không d u ể n=8 bit

 Bi u di n đ

c các giá tr t

0 đ n 255 ế

ượ ễ  0000 0000 = 0  0000 0001 = 1  0000 0010 = 2  0000 0011 = 3  …  1111 1111 = 255

ị ừ Chú ý: 1111 1111 + 0000 0001 1 0000 0000 V y: 255 + 1 = 0?  do tràn nh ra ngoài

 S bù m t và S bù hai

s A là m t s nh phân, ta có:

ố ộ ố

ượ

c b ng cách đ o giá tr các bit ả

 (S bù hai c a A) = (S bù m t c a A) + 1

ố  Gi ả ử  S bù m t c a A nh n đ ộ ủ ố c a Aủ ố

ộ ủ

 Ví d : v i n= 8 bit ụ ớ s có A =  Gi ả ử  S bù m t c a A = ộ ủ ố

0010 0101 1101 1010 + 1 1101 1011

 S bù hai c a A = ủ  Vì A + (S bù hai c a A) = 0 ủ ố  dùng s bù hai đ bi u di n cho s âm ể ể

Bi u di n s nguyên có d u ể ễ ấ ố

 Dùng n bit bi u di n s nguyên có d u A:

 Qui

 Bi u di n s nguyên có d u b ng mã bù hai ố an-1an-2…a2a1a0 c: ch n bit có tr ng s cao nh t (MSB) làm ố ọ

i bi u di n

 V i A là s âm: đ

ượ

c bi u di n b ng s bù hai c a s ố

d

ễ ng ng, vì v y bit a

ng t

ướ bit d uấ  V i A là s d ớ ộ ớ ớ ươ

n-1 = 0, các bit còn l ng: bit a ố ươ đ l n nh s không d u ư ố ấ ể ố ậ ươ

ằ n-1 = 1

Bi u di n s nguyên có d u ố ễ ể ấ

 D ng t ng quát c a s nguyên A:

ủ ố an-1an-2…a2a1a0

 Giá tr c a A đ

ị ủ

ượ

ư

Bi u di n s nguyên có d u ố ễ ể ấ

c xác đ nh nh sau: n

2

-

n

1

i

-=

+

A

a

2

2

-

n

1

a i

=

0

i

 D i bi u di n: ể ấ

-2n-1 ÷ 2n-1-1 ị

 S 8 bit có d u có giá tr : -128 ÷ +127  S 16 bit có d u có giá tr : -32768 ÷ +32767

ố ố

(cid:229) -

ể ấ ố

c các giá tr t

ị ừ

-128 đ n +127 ế

Chú ý: +127 + 1 = -128 -128 - 1 = +127  do tràn x y raả

 Bi u di n đ ượ  0000 0000 = 0  0000 0001 = +1  0000 0010 = +2  0000 0011 = +3  …  0111 1111 = +127  1000 0000 = - 128  1000 0001 = - 127  …  1111 1110 = -2  1111 1111 = -1

Bi u di n s nguyên có d u ễ n = 8 bit

 Chuy n đ i t ể  Đ i v i s d

byte thành word ng:

ổ ừ ố ớ ố ươ

 +19 = 0001 0011 (8 bit)  +19 = 0000 0000 0001 0011 (16 bit) thêm 8 bit 0 bên trái

 Đ i v i s âm: ố ớ ố

 V i n=32 bit: bi u di n t  V i n=64 bit: bi u di n t

-2 -2

31-1 63-1

 - 19 = 1110 1101 (8 bit)  - 19 = 1111 1111 1110 1101 (16 bit) thêm 8 bit 1 bên trái ể ể

ễ ừ 31 đ n 2ế ễ ừ 63 đ n 2ế

ớ ớ

Bi u di n s nguyên có d u ể ễ ấ ố

Bi u di n s nguyên theo mã BCD Binary Coded Decimal Code

 S BCD đ

c dùng đ tính toán trên s th p phân

ố ậ

trong h nh phân.

ượ ị

ệ  S BCD là s vi

t theo h 16 nh ng giá tr tính theo

ố ế

ư

ố ệ

h 10.  S 12ố

ượ

ế

t trong h 2 là 0001 0010 nh ng có giá tr ị

ư

BCD đ

c vi ệ là 12 thay vì 18 (1216= 1810).

 Dùng 4 bit đ mã hoá cho các ch s th p phân t

0 đ n 9 ế 9  1001

ữ ố ậ 6  0110 7  0111 8  1000

 Có 6 t

0  0000 1  0001 2  0010 ổ ợ

3  0011 4  0100 5  0101 ử ụ

h p không s d ng:  1010, 1011, 1100, 1101, 1110, 1111

 BCD không gói (Unpacked BCD):

c l u tr trong 4-bit th p

 M i s BCD 4-bit đ

ượ ư

ỗ ố c a m i byte. ỗ ủ  Ví d : S 35 đ ụ ố

c l u tr 2 byte: ữ

ượ ư  0011 0101  BCD gói (Packed BCD): c l u tr trong 1 byte. ữ c l u tr 1 byte: ữ

ượ ư ượ ư

 Hai s BCD đ ố  Ví d : s 35 đ ụ ố  0 0 1 1 0 1 0 1

Các ki u l u tr s BCD ể ư ữ ố

ệ ố ọ

 Phép đ o d u trong máy tính th c ch t là l y bù 2

 Phép c ngộ  Phép đ o d u ấ ấ

ả ả  Phép trừ  Nhân s nguyên ố

 Thu t toán nhân nhanh Booth

 không d uấ  có d uấ ậ  Chia s nguyên ố

 không d uấ  có d uấ

Th c hi n các phép toán s h c ự v i s nguyên ớ ố

Khi c ng 2 s nguyên không d u n bit, k t qu nh n đ

c là n bit:

ế

ượ

c luôn

-N u ế không có nh ra kh i bít cao nh t ớ

ấ thì k t qu nh n đ

ế

ượ

đúng (Cout =0).

c là sai, ta

-N u ế có nh ra kh i bit cao nh t

ấ thì k t qu nh n đ

ế

ượ

nói có nh tràn ra ngoài (C

out = 1).

- Tràn nh ra ngoài (carry out) x y ra khi t ng >2

n-1

Phép c ng s nguyên không d u ấ ố ộ

PHÉP Đ O D U Ả Ấ

C NG S NGUYÊN CÓ D U Ố Ộ Ấ

Nguyên t c th c hi n phép tr ự ệ ắ ừ

Nhân s nguyên không d u ấ ố

ố ấ

Nhân s nguyên không d u (ti p)ế

B nhân s không d u ố ấ ộ

B nhân s không d u ố ấ ộ

NHÂN S NGUYÊN CÓ D U Ố Ấ

CHIA 2 S NGUYÊN KHÔNG D U

CHIA 2 S NGUYÊN KHÔNG D U

trái sang ph i nh sau:

Th c hi n chia t ệ

ư

-M i l n l y 1 ch s ữ ố

ỗ ầ ấ

N u không chia đ

c thì ph n k t qu vi

t 0 vào.

ế

ượ

ả ế

ế

N u chia đ

c thì vi

ế

ượ

ế ế

t k t qu và nhân l ả

i r i tr . ạ ồ ừ

- L p l

i cho t

ặ ạ

i khi h t ch s . ữ ố

ế

CHIA 2 S NGUYÊN CÓ D U

 S ch m đ ng (floating point) dùng đ tính toán

c bi u di n theo ki u s d u ch m đ ng

ượ

ố ấ

nh sau:

ộ ấ trên s th c. ố ự  m t s th c X đ ộ ố ự ư X = ± m * B±e ị

S d u ch m đ ng ố ấ ấ ộ

 m là ph n đ nh tr (Mantissa), ị ầ  B là c s (base), ơ ố  e là ph n mũ (Exponent). ầ ế ị

 m (mantissa) quy t đ nh đ chính xác  B (base)  e (exponent) quy t đ nh đ l n/nh ỏ

ế ị

ộ ớ

 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 ẩ

S d u ch m đ ng ố ấ ấ ộ

S ch m đ ng theo chu n IEEE 754 (Institute of Electric & Electronic Engineers)

 C s 2 ơ ố  Có 2 d ngạ

 Chính xác đ nơ

 32 bit, đ l ch mũ (bias) 127  Công th c tính giá tr X = (-1)

S x 1.m x 2e-127

ộ ệ ứ

 Chính xác kép

 64 bit, đ l ch mũ (bias) 1023  Công th c tính giá tr X = (-1)

S x 1.m x 2e-1023

ộ ệ ứ

S ch m đ ng theo chu n IEEE 754

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)

Ví dụ

ố ự

 Tính s th c: 0100 0010 1000 1100 1110 1001 1111 1100

Ví dụ

 B mã ASCII (American Standard Code for

Information Interchange)  Do ANSI (American National Standard Institute)

 B mã 8 bit có th mã hóa đ

c 28 =256 ký t

,

t kế ế thi ộ

ượ

chu n, có mã t ừ m r ng, có mã t

8016 ÷ FF16

0016 ÷ 7F16 ừ

có mã t : 0016 ÷ FF16 , trong đó: ừ  128 ký t ẩ ự  128 ký t ự ở ộ  B mã Unicode ộ

Bi u di n ký t ễ ể ự

 Các ký t

chu n

41

ế

16 đ n 5A ế

16 (65 đ n 90) ế

26 ch cái hoa ‘A’ đ n ‘Z’ có mã t  ‘A’ 􀃆 0100 0001 = 4116  ‘B’ 􀃆 0100 0010 = 4216  ...  ‘Z’ 􀃆 0101 1010 = 5A16

 26 ch cái th

ng ‘a’ đ n ‘z’ có mã t

61

ườ

ế

16 đ n 7A ế

16 (97 đ n 122) ế

0 đ n 9 có mã t

30

ế

16 đ n 39 ế

16 (48 đ n 57) ế

 ‘a’ 􀃆 0110 0001 = 6116  ‘b’ 􀃆 0110 0010 = 6216  ...  ‘z’ 􀃆 0111 1010 = 7A16  10 ch s th p phân t ữ ố ậ  ‘0’ 􀃆 0011 0000 = 3016  ‘1’ 􀃆 0011 0001 = 3116  ...  ‘9’ 􀃆 0011 1001 = 3916

B mã ASCII ộ

t k ế ế

ộ ộ

 Do các hãng máy tính hàng đ u thi  B mã 16-bit  B mã đa ngôn ng  Có h tr các ký t ỗ ợ

ữ ti ng Vi ự ế

t ệ

B mã h p nh t Unicode ấ ợ ộ