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 ấ ợ ộ