You are on page 1of 18

Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Kiến trúc máy tính Nội dung học phần

„ Chương 1. Giới thiệu chung


Chương 2. Cơ bản về logic số
Chương 5 „

„ Chương 3. Tổng quan về hệ thống máy tính


SỐ HỌC MÁY TÍNH „ Chương 4. Kiến trúc tập lệnh
„ Chương 5. Số học máy tính
„ Chương 6. Bộ xử lý trung tâm
„ Chương 7. Bộ nhớ máy tính
Nguyễn Kim Khánh „ Chương 8. Hệ thống vào-ra
Trường Đại học Bách khoa Hà Nội
„ Chương 9. Máy tính song song

Bài giảng Kiến trúc Máy tính 1 Bài giảng Kiến trúc Máy tính 2

NKK-HUT NKK-HUT

Nội dung chương 5 5.1. Biểu diễn số nguyên

5.1. Biểu diễn số nguyên


5.2. Phép cộng và phép trừ số nguyên „ Số nguyên không dấu (Unsigned Integer)
5.3. Phép nhân „ Số nguyên có dấu (Signed Integer)
5.4. Phép chia
5.5. Số dấu phẩy động

Bài giảng Kiến trúc Máy tính 3 Bài giảng Kiến trúc Máy tính 4

Nguyễn Kim Khánh - ĐHBKHN 1


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

1. Biểu diễn số nguyên không dấu Các ví dụ


„ Nguyên tắc tổng quát: Dùng n bit biểu diễn số
nguyên không dấu A: „ Ví dụ 1. Biểu diễn các số nguyên không dấu
sau đây bằng 8-bit:
a n −1 a n − 2 ... a 2 a1 a 0 A = 41 ; B = 150
Giải:
Giá trị của A được tính như sau: A = 41 = 32 + 8 + 1 = 25 + 23 + 20
n −1 41 = 0010 1001
A = ∑ ai 2 i
i =0 B = 150 = 128 + 16 + 4 + 2 = 27 + 24 + 22 + 21
Dải biểu diễn của A: từ 0 đến 2n – 1 150 = 1001 0110

Bài giảng Kiến trúc Máy tính 5 Bài giảng Kiến trúc Máy tính 6

NKK-HUT NKK-HUT

Các ví dụ (tiếp) Với n = 8 bit

„ Ví dụ 2. Cho các số nguyên không dấu M, N Biểu diễn được các giá trị từ 0 đến 255
được biểu diễn bằng 8-bit như sau:
0000 0000 = 0 Chú ý:
„ M = 0001 0010 0000 0001 = 1 1111 1111
„ N = 1011 1001 0000 0010 = 2 + 0000 0001
Xác định giá trị của chúng ? 0000 0011 = 3 1 0000 0000
Giải: ... Vậy: 255 + 1 = 0 ?
1111 1111 = 255 Æ do tràn nhớ ra
„ M = 0001 0010 = 24 + 21 = 16 +2 = 18
ngoài
„ N = 1011 1001 = 27 + 25 + 24 + 23 + 20
= 128 + 32 + 16 + 8 + 1 = 185

Bài giảng Kiến trúc Máy tính 7 Bài giảng Kiến trúc Máy tính 8

Nguyễn Kim Khánh - ĐHBKHN 2


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Trục số học với n = 8 bit Với n = 16 bit, 32 bit, 64 bit


Trục số học: „ n= 16 bit: dải biểu diễn từ 0 đến 65535 (216 – 1)
„ 0000 0000 0000 0000 = 0
„ ...
„ 0000 0000 1111 1111 = 255
Trục số học máy tính:
„ 0000 0001 0000 0000 = 256
„ ...
„ 1111 1111 1111 1111 = 65535

„ n= 32 bit: dải biểu diễn từ 0 đến 232 - 1


„ n= 64 bit: dải biểu diễn từ 0 đến 264 - 1

Bài giảng Kiến trúc Máy tính 9 Bài giảng Kiến trúc Máy tính 10

NKK-HUT NKK-HUT

2. Biểu diễn số nguyên có dấu Số bù chín và Số bù mười (tiếp)

a. Số bù chín và Số bù mười „ Ví dụ: với n=4, cho A = 3265


„ Số bù chín của A:
„ Cho một số thập phân A được biểu diễn
bằng n chữ số thập phân, ta có: 9999 (104-1)
- 3265 (A)
„ Số bù chín của A = (10n-1) – A
6734
„ Số bù mười của A = 10n – A
„ Số bù mười của A:
„ Số bù mười của A = (Số bù chín của A) +1
10000 (104)
- 3265 (A)
6735
Bài giảng Kiến trúc Máy tính 11 Bài giảng Kiến trúc Máy tính 12

Nguyễn Kim Khánh - ĐHBKHN 3


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

b. Số bù một và Số bù hai Số bù một và Số bù hai (tiếp)


Ví dụ: với n = 8 bit, cho A = 0010 0101
„ Số bù một của A được tính như sau:
„ Định nghĩa: Cho một số nhị phân A
1111 1111 (28-1)
được biểu diễn bằng n bit, ta có:
- 0010 0101 (A)
„ Số bù một của A = (2n-1) – A 1101 1010
„ Số bù hai của A = 2n – A Æ đảo các bit của A
„ Số bù hai của A = (Số bù một của A) +1 „ Số bù hai của A được tính như sau:

1 0000 0000 (28)


- 0010 0101 (A)
1101 1011
Æ thực hiện khó khăn
Bài giảng Kiến trúc Máy tính 13 Bài giảng Kiến trúc Máy tính 14

NKK-HUT NKK-HUT

Quy tắc tìm Số bù một và Số bù hai c. Biểu diễn số nguyên có dấu bằng mã bù hai

„ Số bù một của A = đảo giá trị các bit của A


Nguyên tắc tổng quát: Dùng n bit biểu diễn số
„ (Số bù hai của A) = (Số bù một của A) + 1 nguyên có dấu A:
„ Ví dụ:
„ Cho A = 0010 0101 an−1an−2 ...a2a1a0
„ Số bù một = 1101 1010
+ 1 „ Với A là số dương: bit an-1 = 0, các bit còn lại
„ Số bù hai = 1101 1011 biểu diễn độ lớn như số không dấu
„ Nhận xét: „ Với A là số âm: được biểu diễn bằng số bù hai
A = 0010 0101
Số bù hai = + 1101 1011
của số dương tương ứng, vì vậy bit an-1 = 1
1 0000 0000 = 0
(bỏ qua bit nhớ ra ngoài)
Æ Số bù hai của A = -A
Bài giảng Kiến trúc Máy tính 15 Bài giảng Kiến trúc Máy tính 16

Nguyễn Kim Khánh - ĐHBKHN 4


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Biểu diễn số dương Biểu diễn số âm

„ Dạng tổng quát của số dương A: „ Dạng tổng quát của số âm A:

0 a n − 2 ... a 2 a1 a0 1a n − 2 ... a 2 a1 a0
„ Giá trị của số dương A: „ Giá trị của số âm A:
n−2 n−2
A = ∑ ai 2 i A = −2 n −1
+ ∑ ai 2 i
i =0 i =0

„ Dải biểu diễn cho số dương: 0 đến 2n-1-1 „ Dải biểu diễn cho số âm: -1 đến -2n-1

Bài giảng Kiến trúc Máy tính 17 Bài giảng Kiến trúc Máy tính 18

NKK-HUT NKK-HUT

Biểu diễn tổng quát cho số nguyên có dấu Các ví dụ


„ Ví dụ 1. Biểu diễn các số nguyên có dấu sau
„ Dạng tổng quát của số nguyên A:
đây bằng 8-bit:
a n −1 a n − 2 ... a 2 a1 a 0 A = +58 ; B = -80
Giải:
„ Giá trị của A được xác định như sau: A = +58 = 0011 1010
n−2
+ ∑ ai 2 i
n −1 B = -80
A = − a n −1 2 Ta có: + 80 = 0101 0000
i =0 Số bù một = 1010 1111
+ 1
„ Dải biểu diễn: từ -(2n-1) đến +(2n-1-1) Số bù hai = 1011 0000

Vậy: B = -80 = 1011 0000


Bài giảng Kiến trúc Máy tính 19 Bài giảng Kiến trúc Máy tính 20

Nguyễn Kim Khánh - ĐHBKHN 5


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Các ví dụ Với n = 8 bit


Biểu diễn được các giá trị từ -128 đến +127
„ Ví dụ 2. Hãy xác định giá trị của các số nguyên
0000 0000 = 0
có dấu được biểu diễn dưới đây:
0000 0001 = +1
„ P = 0110 0010 0000 0010 = +2 Chú ý:
„ Q = 1101 1011 0000 0011 = +3 +127 + 1 = -128
... -128 - 1 = +127
Giải:
0111 1111 = +127 Æ do tràn xảy ra
„ P = 0110 0010 = 64+32+2 = +98
1000 0000 = - 128
„ Q = 1101 1011 = -128+64+16+8+2+1 = -37 1000 0001 = - 127
...
1111 1110 = -2
1111 1111 = -1
Bài giảng Kiến trúc Máy tính 21 Bài giảng Kiến trúc Máy tính 22

NKK-HUT NKK-HUT

Trục số học số nguyên có dấu với n = 8 bit Với n = 16 bit, 32 bit, 64 bit

„ Trục số học: „ Với n=16bit: biểu diễn từ -32768 đến +32767


„ 0000 0000 0000 0000 = 0
„ 0000 0000 0000 0001 = +1
„ ...
„ Trục số học máy tính: „ 0111 1111 1111 1111 = +32767
„ 1000 0000 0000 0000 = -32768
„ ...
„ 1111 1111 1111 1111 = -1

„ Với n=32bit: biểu diễn từ -231 đến 231-1


„ Với n=64bit: biểu diễn từ -263 đến 263-1
Bài giảng Kiến trúc Máy tính 23 Bài giảng Kiến trúc Máy tính 24

Nguyễn Kim Khánh - ĐHBKHN 6


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Chuyển đổi từ byte thành word 3. Biểu diễn số nguyên theo mã BCD

„ Đối với số dương: „ Binary Coded Decimal Code


+19 = 0001 0011 (8bit) „ Dùng 4 bit để mã hóa cho các chữ số
thập phân từ 0 đến 9:
+19 = 0000 0000 0001 0011 (16bit)
0 Æ 0000 5 Æ 0101
Æ thêm 8 bit 0 bên trái 1 Æ 0001 6 Æ 0110
2 Æ 0010 7 Æ 0111
„ Đối với số âm: 3 Æ 0011 8 Æ 1000
- 19 = 1110 1101 (8bit) 4 Æ 0100 9 Æ 1001
- 19 = 1111 1111 1110 1101 (16bit)
„ còn 6 tổ hợp không sử dụng:
Æ thêm 8 bit 1 bên trái
1010, 1011, 1100, 1101, 1110, 1111
Bài giảng Kiến trúc Máy tính 25 Bài giảng Kiến trúc Máy tính 26

NKK-HUT NKK-HUT

Ví dụ số BCD Các kiểu lưu trữ số 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
„ 35 Æ 0011 0101BCD byte.
„ 61 Æ 0110 0001BCD „ Ví dụ: Số 35 được lưu trữ như sau:

„ 1087 Æ 0001 0000 1000 0111BCD


„ 9640 Æ 1001 0110 0100 0000BCD
„ 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:

Bài giảng Kiến trúc Máy tính 27 Bài giảng Kiến trúc Máy tính 28

Nguyễn Kim Khánh - ĐHBKHN 7


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Phép cộng số BCD 5.2. Thực hiện phép cộng/trừ với số nguyên
„ 35 Æ 0011 0101BCD 1. Phép cộng số nguyên không dấu
+ 61 Æ + 0110 0001BCD
Bộ cộng n-bit
96 Å 1001 0110BCD
kết quả đúng (không phải hiệu chỉnh)

„ 87 Æ 1000 0111BCD
+ 96 Æ + 1001 0110BCD
1 83 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)
Bài giảng Kiến trúc Máy tính 29 Bài giảng Kiến trúc Máy tính 30

NKK-HUT NKK-HUT

Nguyên tắc cộng số nguyên không dấu Ví dụ cộng số nguyên không dấu
„ 57 = 0011 1001
Khi cộng hai số nguyên không dấu n-bit, + 34 = + 0010 0010
91 0101 1011 = 64+16+8+2+1=91 Æ đúng
kết quả nhận được là n-bit:
„ Nếu Cout=0 Æ nhận được kết quả đúng. „ 209 = 1101 0001
+ 73 = + 0100 1001
„ Nếu Cout=1 Æ nhận được kết quả sai, 282 1 0001 1010
do tràn nhớ ra ngoài (Carry Out). 0001 1010 = 16+8+2=26 Æ sai
Æ có tràn nhớ ra ngoài (Cout=1)
„ Tràn nhớ ra ngoài khi: tổng > (2n – 1)
Để có kết quả đúng ta thực hiện cộng theo 16-bit:
209 = 0000 0000 1101 0001
+ 73 = + 0000 0000 0100 1001
0000 0001 0001 1010 = 256+16+8+2 = 282
Bài giảng Kiến trúc Máy tính 31 Bài giảng Kiến trúc Máy tính 32

Nguyễn Kim Khánh - ĐHBKHN 8


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

2. Phép đảo dấu 3. Cộng số nguyên có dấu


„ Ta có:
Khi cộng hai số nguyên có dấu n-bit, kết quả
+ 37 = 0010 0101
bù một = 1101 1010 nhận được là n-bit và không cần quan tâm đến
+ 1 bit Cout.
bù hai = 1101 1011 = -37 „ Cộng hai số khác dấu: kết quả luôn luôn đúng.
„ Lấy bù hai của số âm: „ Cộng hai số cùng dấu:
- 37 = 1101 1011 „ nếu dấu kết quả cùng dấu với các số hạng thì kết
bù một = 0010 0100 quả là đúng.
+ 1
„ nếu kết quả có dấu ngược lại, khi đó có tràn xảy ra
bù hai = 0010 0101 = +37
(Overflow) và kết quả bị sai.
„ Kết luận: Phép đảo dấu trong máy tính thực chất là „ Tràn xảy ra khi tổng nằm ngoài dải biểu diễn:
lấy bù hai
[ -(2n-1),+(2n-1-1)]
Bài giảng Kiến trúc Máy tính 33 Bài giảng Kiến trúc Máy tính 34

NKK-HUT NKK-HUT

Ví dụ cộng số nguyên có dấu không tràn Ví dụ cộng số nguyên có dấu bị tràn


„ ( + 70) = 0100 0110 „( + 75) = 0100 1011
+ ( + 42) = 0010 1010 +( + 82) = 0101 0010
+ 112 0111 0000 = +112
+157 1001 1101
„ (+ 97) = 0110 0001 = - 128+16+8+4+1= -99 Æ sai
+ (- 52) = 1100 1100 (+52=0011 0100)
+ 45 1 0010 1101 = +45
„ ( - 104) = 1001 1000 (+104=0110 1000)
„ ( - 90) = 1010 0110 (+90=0101 1010) + ( - 43) = 1101 0101 (+ 43 =0010 1011)
+ ( +36) = 0010 0100 - 147 1 0110 1101
- 54 1100 1010 = - 54 = 64+32+8+4+1= +109 Æ sai
„ Cả hai ví dụ đều tràn vì tổng nằm ngoài dải
„ ( - 74) = 1011 0110 (+74=0100 1010)
+( - 30) = 1110 0010 (+30=0001 1110) biểu diễn [-128, +127]
-104 1 1001 1000 = -104
Bài giảng Kiến trúc Máy tính 35 Bài giảng Kiến trúc Máy tính 36

Nguyễn Kim Khánh - ĐHBKHN 9


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

4. Nguyên tắc thực hiện phép trừ 5.3. Thực hiện phép nhân

„ Phép trừ hai số nguyên: X-Y = X+(-Y) Nhân số nguyên không dấu
„ Nguyên tắc: Lấy bù hai của Y để được –Y,
rồi cộng với X 1011 Số bị nhân (11)
x 1101 Số nhân (13)
1011
0000 Các tích riêng phần
1011
1011
10001111 Tích (143)
Bài giảng Kiến trúc Máy tính 37 Bài giảng Kiến trúc Máy tính 38

NKK-HUT NKK-HUT

Nhân số nguyên không dấu (tiếp) Bộ nhân số nguyên không dấu

„ Các tích riêng phần được xác định như sau:


„ Nếu bit của số nhân bằng 0 Æ tích riêng phần bằng 0.
„ Nếu bit của số nhân bằng 1 Æ tích riêng phần bằng số
bị nhân.
„ Tích riêng phần tiếp theo được dịch trái một bit so với
tích riêng phần trước đó.
„ Tích bằng tổng các tích riêng phần
„ Nhân hai số nguyên n-bit, tích có độ dài 2n bit
(không bao giờ tràn).

Bài giảng Kiến trúc Máy tính 39 Bài giảng Kiến trúc Máy tính 40

Nguyễn Kim Khánh - ĐHBKHN 10


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Lưu đồ nhân số nguyên không dấu Ví dụ nhân số nguyên không dấu


„ Số bị nhân M = 1011 (11)
„ Số nhân Q = 1101 (13)
„ Tích = 1000 1111 (143)

C A Q
„ 0 0000 1101 Các giá trị khởi đầu
+ 1011
0 1011 1101 A ← A + M
„ 0 0101 1110 Dịch phải
„ 0 0010 1111 Dịch phải
+ 1011
0 1101 1111 A ← A + M
„ 0 0110 1111 Dịch phải
+ 1011
1 0001 1111 A ← A + M
„ 0 1000 1111 Dịch phải
Bài giảng Kiến trúc Máy tính 41 Bài giảng Kiến trúc Máy tính 42

NKK-HUT NKK-HUT

Ví dụ nhân số nguyên không dấu Nhân số nguyên có dấu


Số bị nhân M = 0010 (2)
„

„ Số nhân Q = 0011 (3)


„ Sử dụng thuật giải nhân không dấu
„ Tích = 0000 0110 (6) „ Sử dụng thuật giải Booth
C A Q
„ 0 0000 0011 Các giá trị khởi đầu
+ 0010
0 0010 0011 A ← A + M
„ 0 0001 0001 Dịch phải
+ 0010
0 0011 0001
„ 0 0001 1000 Dịch phải
„ 0 0000 1100 Dịch phải
„ 0 0000 0110 Dịch phải

Bài giảng Kiến trúc Máy tính 43 Bài giảng Kiến trúc Máy tính 44

Nguyễn Kim Khánh - ĐHBKHN 11


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT
B¾t ®Çu
Sử dụng thuật giải nhân không dấu Thuật giải Booth
A := 0, Q-1 := 0
„ Bước 1. Chuyển đổi số bị nhân và số M := Sè bÞ nh©n
Q := Sè nh©n

nhân thành số dương tương ứng Bé ®Õm := n

„ Bước 2. Nhân hai số dương bằng thuật =10


Q0,Q-1 = ?
=01

giải nhân số nguyên không dấu, được A := A - M =00 A := A + M

tích của hai số dương. =11

„ Bước 3. Hiệu chỉnh dấu của tích: DÞch ph¶i sè häc A,Q,Q-1
Bé ®Õm:=Bé ®Õm-1

„ Nếu hai thừa số ban đầu cùng dấu thì giữ


No
nguyên kết quả ở bước 2. Bé ®Õm = 0 ?

„ Nếu hai thừa số ban đầu là khác dấu thì đảo Yes

dấu kết quả của bước 2. KÕt thóc

Bài giảng Kiến trúc Máy tính 45 Bài giảng Kiến trúc Máy tính 46

NKK-HUT NKK-HUT

5.4. Thực hiện phép chia Bộ chia số nguyên không dấu

Chia số nguyên không dấu

Số bị chia 10010011 1011 Số chia


1011 00001101 Thương
001110
1011
001111
1011
100 Phần dư

Bài giảng Kiến trúc Máy tính 47 Bài giảng Kiến trúc Máy tính 48

Nguyễn Kim Khánh - ĐHBKHN 12


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Lưu đồ chia số nguyên không dấu 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

Bài giảng Kiến trúc Máy tính 49 Bài giảng Kiến trúc Máy tính 50

NKK-HUT NKK-HUT

5.5. Số dấu phẩy động 2. Chuẩn IEEE754/85


1. Nguyên tắc chung
„ Cơ số R = 2
„ Floating Point Number Æ biểu diễn cho số

thực „ Các dạng:


„ Dạng 32-bit
„ Tổng quát: một số thực X được biểu diễn
„ Dạng 44-bit
theo kiểu số dấu phẩy động như sau:
„ Dạng 64-bit
X = M * RE
„ Dạng 80-bit
„ M là phần định trị (Mantissa),
„ R là cơ số (Radix),
„ E là phần mũ (Exponent).

Bài giảng Kiến trúc Máy tính 51 Bài giảng Kiến trúc Máy tính 52

Nguyễn Kim Khánh - ĐHBKHN 13


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Các dạng biểu diễn chính Dạng 32 bit

„ S là bit dấu:
„ S = 0 Æ số dương
„ S = 1 Æ số âm
„ e (8 bit) là mã excess-127 của phần mũ E:
„ e = E+127 Æ E = e – 127
„ giá trị 127 gọi là là độ lệch (bias)
„ m (23 bit) là phần lẻ của phần định trị M:
„ M = 1.m
„ Công thức xác định giá trị của số thực:
X = (-1)S*1.m * 2e-127
Bài giảng Kiến trúc Máy tính 53 Bài giảng Kiến trúc Máy tính 54

NKK-HUT NKK-HUT

Ví dụ 1 Ví dụ 2

Xác định giá trị của số thực được biểu diễn bằng Biểu diễn số thực X= 83.75 về dạng số dấu phẩy
32-bit như sau: động IEEE754 32-bit
„ 1100 0001 0101 0110 0000 0000 0000 0000 Giải:
„ S = 1 Æ số âm „ X = 83.75(10) = 1010011.11(2) = 1.01001111 x 26
„ e = 1000 00102 = 130 Æ E = 130-127=3
„ Ta có:
Vậy
„ S = 0 vì đây là số dương
X = -1.10101100 * 23 = -1101.011 = -13.375
„ E = e-127 = 6 Æ e = 127 + 6 = 133(10) = 1000 0101(2)

„ 0011 1111 1000 0000 0000 0000 0000 0000 = ? „ Vậy:


= +1.0 X = 0100 0010 1010 0111 1000 0000 0000 0000

Bài giảng Kiến trúc Máy tính 55 Bài giảng Kiến trúc Máy tính 56

Nguyễn Kim Khánh - ĐHBKHN 14


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Ví dụ 3 Bài tập
Biểu diễn số thực X= -0,2 về dạng số dấu phẩy Biểu diễn các số thực sau đây về dạng số
động IEEE754 32-bit dấu phẩy động IEEE754 32-bit:
Giải:
X = - 27.0625; Y = 1/32
„ X = -0,2(10) = - 0.00110011...0011...(2) =
= - 1.100110011..0011... x 2-3
„ Ta có:
„ S = 1 vì đây là số âm
„ E = e-127 = -3 Æ e = 127 -3 = 124(10) = 0111 1100(2)
„ Vậy:
X = 1011 1110 0100 1100 1100 1100 1100 1100

Bài giảng Kiến trúc Máy tính 57 Bài giảng Kiến trúc Máy tính 58

NKK-HUT NKK-HUT

Các qui ước đặc biệt Dải giá trị biểu diễn
„ 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
„ 2-127 đến 2+127
„ 10-38 đến 10+38
„ 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 một bit bằng 1, thì
nó không biểu diễn cho số nào cả (NaN - not a number)

Bài giảng Kiến trúc Máy tính 59 Bài giảng Kiến trúc Máy tính 60

Nguyễn Kim Khánh - ĐHBKHN 15


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Dạng 64-bit Dạng 80-bit

„ S là bit dấu „ S là bit dấu


„ e (11 bit): mã excess-1023 của phần „ e (15 bit): mã excess-16383 của phần
mũ E Æ E = e – 1023 mũ E Æ E = e – 16383
„ m (52 bit): phần lẻ của phần định trị M „ m (64 bit): phần lẻ của phần định trị M
„ Giá trị số thực: „ Giá trị số thực:
X = (-1)S*1.m * 2e-1023 X = (-1)S*1.m * 2e-16383
„ Dải giá trị biểu diễn: 10-308 đến 10+308 „ Dải giá trị biểu diễn: 10-4932 đến 10+4932

Bài giảng Kiến trúc Máy tính 61 Bài giảng Kiến trúc Máy tính 62

NKK-HUT NKK-HUT

3.Thực hiện phép toán số dấu phẩy động Các khả năng tràn số
„ Tràn trên số mũ (Exponent Overflow): mũ
„ X1 = M1 * RE1 dương vượt ra khỏi giá trị cực đại của số mũ
„ X2 = M2 * RE2 dương có thể. (Æ ∞)
„ Ta có „ Tràn dưới số mũ (Exponent Underflow): mũ âm
„ X1 * X2 = (M1* M2) * RE1+E2 vượt ra khỏi giá trị cực đại của số mũ âm có thể
„ X1 / X2 = (M1 / M2) * RE1-E2 (Æ 0).
„ X1 ± X2 = (M1*RE1-E2 ± M2) * RE2 , với E2 ≥ E1 „ 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ị.
Bài giảng Kiến trúc Máy tính 63 Bài giảng Kiến trúc Máy tính 64

Nguyễn Kim Khánh - ĐHBKHN 16


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Phép cộng và phép trừ Thuật toán cộng/trừ số dấu phẩy động

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


không
„ Hiệu chỉnh phần định trị
„ Cộng hoặc trừ phần định trị
„ Chuẩn hoá kết quả

Bài giảng Kiến trúc Máy tính 65 Bài giảng Kiến trúc Máy tính 66

NKK-HUT NKK-HUT

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

Bài giảng Kiến trúc Máy tính 67 Bài giảng Kiến trúc Máy tính 68

Nguyễn Kim Khánh - ĐHBKHN 17


Bài giảng Kiến trúc máy tính

NKK-HUT NKK-HUT

Giải bài tập


X = -27.0625(10) = 11011.0001(2) = 1.10110001 x 24
„ Ta có:
„ S=1
„ E = e-127 = 4 Æ e = 127 + 4 = 131(10) = 1000 0011(2)
Hết chương 5 „ Vậy:
X = 1100 0001 1101 1000 1000 0000 0000 0000
Y = 1/32(10) = 1.0 x 2-5
„ Ta có:
„ S=0
„ E = e-127 = -5 Æ e = 127 -5 = 12210) = 0111 1010(2)
„ Vậy:
X = 0011 1101 0000 0000 0000 0000 0000 0000
Bài giảng Kiến trúc Máy tính 69 Bài giảng Kiến trúc Máy tính 70

Nguyễn Kim Khánh - ĐHBKHN 18

You might also like