Kiến trúc máy tính - Chương 5: Số học máy tính

pdf 66 trang vanle 3110
Bạn đang xem 20 trang mẫu của tài liệu "Kiến trúc máy tính - Chương 5: Số học máy tính", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfkien_truc_may_tinh_chuong_5_so_hoc_may_tinh.pdf

Nội dung text: Kiến trúc máy tính - Chương 5: Số học máy tính

  1. NKK-HUT Kiến trúc máy tính Chương 5 SỐ HỌC MÁY TÍNH Nguyễn Kim Khánh Trường Đại học Bách khoa Hà Nội 26 May 2012 IT3030 1
  2. NKK-HUT 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 3. Hệ thống 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ý  Chương 7. Bộ nhớ  Chương 8. Vào-ra  Chương 9. Kiến trúc máy tính tiên tiến 2626 May May 2012 2012 IT3030 2
  3. NKK-HUT Nội dung chương 5 5.1. Biểu diễn số nguyên 5.2. Phép cộng và phép trừ số nguyên 5.3. Phép nhân 5.4. Phép chia 5.5. Số dấu phẩy động 26 May 2012 IT3030 3
  4. NKK-HUT 5.1. Biểu diễn số nguyên  Số nguyên không dấu (Unsigned Integer)  Số nguyên có dấu (Signed Integer) 26 May 2012 IT3030 4
  5. NKK-HUT 1. Biểu diễn số nguyên không dấu  Nguyên tắc tổng quát: Dùng n bit biểu diễn số nguyên không dấu A: a n 1 a n 2 a 2 a 1 a 0 Giá trị của A được tính như sau: n 1 A a 2 i  i i 0 Dải biểu diễn của A: từ 0 đến 2n – 1 26 May 2012 IT3030 5
  6. NKK-HUT Các ví dụ  Ví dụ 1. Biểu diễn các số nguyên không dấu sau đây bằng 8-bit: A = 41 ; B = 150 Giải: A = 41 = 32 + 8 + 1 = 25 + 23 + 20 41 = 0010 1001 B = 150 = 128 + 16 + 4 + 2 = 27 + 24 + 22 + 21 150 = 1001 0110 26 May 2012 IT3030 6
  7. NKK-HUT Các ví dụ (tiếp)  Ví dụ 2. Cho các số nguyên không dấu M, N được biểu diễn bằng 8-bit như sau:  M = 0001 0010  N = 1011 1001 Xác định giá trị của chúng ? Giải: 4 1  M = 0001 0010 = 2 + 2 = 16 +2 = 18 7 5 4 3 0  N = 1011 1001 = 2 + 2 + 2 + 2 + 2 = 128 + 32 + 16 + 8 + 1 = 185 26 May 2012 IT3030 7
  8. NKK-HUT Với n = 8 bit Biểu diễn được các giá trị từ 0 đến 255 0000 0000 = 0 Chú ý: 0000 0001 = 1 1111 1111 0000 0010 = 2 + 0000 0001 0000 0011 = 3 1 0000 0000 Vậy: 255 + 1 = 0 ? do tràn nhớ ra 1111 1111 = 255 ngoài 26 May 2012 IT3030 8
  9. NKK-HUT Trục số học với n = 8 bit Trục số học: 0 1 2 3 255 Trục số học máy tính: 255 0 1 254 2 3 26 May 2012 IT3030 9
  10. NKK-HUT Với n = 16 bit, 32 bit, 64 bit 16  n= 16 bit: dải biểu diễn từ 0 đến 65535 (2 – 1)  0000 0000 0000 0000 = 0   0000 0000 1111 1111 = 255  0000 0001 0000 0000 = 256   1111 1111 1111 1111 = 65535 32  n= 32 bit: dải biểu diễn từ 0 đến 2 - 1 64  n= 64 bit: dải biểu diễn từ 0 đến 2 - 1 26 May 2012 IT3030 10
  11. NKK-HUT 2. Biểu diễn số nguyên có dấu Số bù chín và Số bù mười  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ó: n  Số bù chín của A = (10 -1) – A n  Số bù mười của A = 10 – A  Số bù mười của A = (Số bù chín của A) +1 26 May 2012 IT3030 11
  12. NKK-HUT Số bù chín và Số bù mười (tiếp)  Ví dụ: với n=4, cho A = 3265  Số bù chín của A: 9999 (104-1) - 3265 (A) 6734  Số bù mười của A: 1 0000 (104) - 3265 (A) 6735 26 May 2012 IT3030 12
  13. NKK-HUT Số bù một và Số bù hai  Định nghĩa: Cho một số nhị phân A được biểu diễn bằng n bit, ta có: n  Số bù một của A = (2 -1) – A n  Số bù hai của A = 2 – A  Số bù hai của A = (Số bù một của A) +1 26 May 2012 IT3030 13
  14. NKK-HUT 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: 1111 1111 (28-1) - 0010 0101 (A) 1101 1010 đảo các bit của A  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 26 May 2012 IT3030 14
  15. NKK-HUT Quy tắc tìm Số bù một và Số bù hai  Số bù một của A = đảo giá trị các bit của A  (Số bù hai của A) = (Số bù một của A) + 1  Ví dụ:  Cho A = 0010 0101  Số bù một = 1101 1010 + 1  Số bù hai = 1101 1011  Nhận xét: A = 0010 0101 Số bù hai = + 1101 1011 1 0000 0000 = 0 (bỏ qua bit nhớ ra ngoài) Số bù hai của A = -A 26 May 2012 IT3030 15
  16. NKK-HUT Biểu diễn số nguyên có dấu bằng mã bù hai Nguyên tắc tổng quát: Dùng n bit biểu diễn số nguyên có dấu A: a n 1 a n 2 a 2 a 1 a 0  Với A là số dương: bit an-1 = 0, các bit còn lại biểu diễn độ lớn như số không dấu  Với A là số âm: được biểu diễn bằng số bù hai của số dương tương ứng, vì vậy bit an-1 = 1 26 May 2012 IT3030 16
  17. NKK-HUT Biểu diễn số dương  Dạng tổng quát của số dương A: 0 a n 2 a 2 a 1 a 0  Giá trị của số dương A: n 2 i A a i 2  i 0 n-1  Dải biểu diễn cho số dương: 0 đến 2 -1 26 May 2012 IT3030 17
  18. NKK-HUT Biểu diễn số âm  Dạng tổng quát của số âm A: 1a n 2 a 2 a 1 a 0  Giá trị của số âm A: n 2 A 2 n 1 a 2 i  i i 0 n-1  Dải biểu diễn cho số âm: -1 đến -2 26 May 2012 IT3030 18
  19. NKK-HUT Biểu diễn tổng quát cho số nguyên có dấu  Dạng tổng quát của số nguyên A: a n 1 a n 2 a 2 a 1 a 0  Giá trị của A được xác định như sau: n 2 A a 2 n 1 a 2 i n 1  i i 0 n-1 n-1  Dải biểu diễn: từ -(2 ) đến +(2 -1) 26 May 2012 IT3030 19
  20. NKK-HUT 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 = +58 ; B = -80 Giải: A = +58 = 0011 1010 B = -80 Ta có: + 80 = 0101 0000 Số bù một = 1010 1111 + 1 Số bù hai = 1011 0000 Vậy: B = -80 = 1011 0000 26 May 2012 IT3030 20
  21. NKK-HUT Các ví dụ  Ví dụ 2. Hãy xác định giá trị của các số nguyên có dấu được biểu diễn dưới đây:  P = 0110 0010  Q = 1101 1011 Giải:  P = 0110 0010 = 64+32+2 = +98  Q = 1101 1011 = -128+64+16+8+2+1 = -37 26 May 2012 IT3030 21
  22. NKK-HUT Với n = 8 bit Biểu diễn được các giá trị từ -128 đến +127 0000 0000 = 0 0000 0001 = +1 0000 0010 = +2 Chú ý: 0000 0011 = +3 +127 + 1 = -128 -128 - 1 = +127 0111 1111 = +127 do tràn xảy ra 1000 0000 = - 128 1000 0001 = - 127 1111 1110 = -2 1111 1111 = -1 26 May 2012 IT3030 22
  23. NKK-HUT Trục số học số nguyên có dấu với n = 8 bit  Trục số học: -128 -2 -1 0 1 2 +127  Trục số học máy tính: -1 0 +1 -2 +2 -3 +3 -128 +127 26 May 2012 IT3030 23
  24. NKK-HUT Với n = 16 bit, 32 bit, 64 bit  Với n=16bit: biểu diễn từ -32768 đến +32767  0000 0000 0000 0000 = 0  0000 0000 0000 0001 = +1   0111 1111 1111 1111 = +32767  1000 0000 0000 0000 = -32768   1111 1111 1111 1111 = -1 31 31  Với n=32bit: biểu diễn từ -2 đến 2 -1 63 63  Với n=64bit: biểu diễn từ -2 đến 2 -1 26 May 2012 IT3030 24
  25. NKK-HUT Chuyển đổi từ 8 bit thành 16 bit  Đối với số dương: +19 = 0001 0011 (8bit) +19 = 0000 0000 0001 0011 (16bit) thêm 8 bit 0 bên trái  Đối với số âm: - 19 = 1110 1101 (8bit) - 19 = 1111 1111 1110 1101 (16bit) thêm 8 bit 1 bên trái 26 May 2012 IT3030 25
  26. NKK-HUT 5.2. Thực hiện phép cộng/trừ với số nguyên 1. Phép cộng số nguyên không dấu Bộ cộng n-bit Y X n bit n bit C out Cin Bé céng n-bit n bit S 26 May 2012 IT3030 26
  27. NKK-HUT Nguyên tắc cộng số nguyên không dấu Khi cộng hai số nguyên không dấu n-bit, kết quả nhận được là n-bit:  Nếu Cout=0 nhận được kết quả đúng.  Nếu Cout=1 nhận được kết quả sai, do tràn nhớ ra ngoài (Carry Out). n  Tràn nhớ ra ngoài khi: tổng > (2 – 1) 26 May 2012 IT3030 27
  28. NKK-HUT Ví dụ cộng số nguyên không dấu  57 = 0011 1001 + 34 = + 0010 0010 91 0101 1011 = 64+16+8+2+1=91 đúng  209 = 1101 0001 + 73 = + 0100 1001 282 1 0001 1010 0001 1010 = 16+8+2=26 sai có tràn nhớ ra ngoài (Cout=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 26 May 2012 IT3030 28
  29. NKK-HUT 2. Phép đảo dấu  Ta có: + 37 = 0010 0101 bù một = 1101 1010 + 1 bù hai = 1101 1011 = -37  Lấy bù hai của số âm: - 37 = 1101 1011 bù một = 0010 0100 + 1 bù hai = 0010 0101 = +37  Kết luận: Phép đảo dấu số nguyên trong máy tính thực chất là lấy bù hai 26 May 2012 IT3030 29
  30. NKK-HUT 3. Cộng số nguyên có dấu Khi cộng hai số nguyên có dấu n-bit, kết quả nhận được là n-bit và không cần quan tâm đến . bit Cout  Cộng hai số khác dấu: kết quả luôn luôn đúng.  Cộng hai số cùng dấu:  nếu dấu kết quả cùng dấu với các số hạng thì kết quả là đúng.  nếu kết quả có dấu ngược lại, khi đó có tràn xảy ra (Overflow) và kết quả bị sai.  Tràn xảy ra khi tổng nằm ngoài dải biểu diễn: [ -(2n-1),+(2n-1-1)] 26 May 2012 IT3030 30
  31. NKK-HUT Ví dụ cộng số nguyên có dấu không tràn  ( + 70) = 0100 0110 + ( + 42) = 0010 1010 + 112 0111 0000 = +112  (+ 97) = 0110 0001 + (- 52) = 1100 1100 (+52=0011 0100) + 45 1 0010 1101 = +45  ( - 90) = 1010 0110 (+90=0101 1010) + ( +36) = 0010 0100 - 54 1100 1010 = - 54  ( - 74) = 1011 0110 (+74=0100 1010) +( - 30) = 1110 0010 (+30=0001 1110) -104 1 1001 1000 = -104 26 May 2012 IT3030 31
  32. NKK-HUT Ví dụ cộng số nguyên có dấu bị tràn  ( + 75) = 0100 1011 +( + 82) = 0101 0010 +157 1001 1101 = - 128+16+8+4+1= -99 sai  ( - 104) = 1001 1000 (+104=0110 1000) + ( - 43) = 1101 0101 (+ 43 =0010 1011) - 147 1 0110 1101 = 64+32+8+4+1= +109 sai  Cả hai ví dụ đều tràn vì tổng nằm ngoài dải biểu diễn [-128, +127] 26 May 2012 IT3030 32
  33. NKK-HUT 4. Nguyên tắc thực hiện phép trừ  Phép trừ hai số nguyên: X-Y = X+(-Y)  Nguyên tắc: Lấy bù hai của Y để được –Y, rồi cộng với X n-bit Y n-bit X Bï hai Bé céng n-bit n-bit S= X-Y 26 May 2012 IT3030 33
  34. NKK-HUT 5.3. Thực hiện phép nhân Nhân số nguyên không dấu 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) 26 May 2012 IT3030 34
  35. NKK-HUT Nhân số nguyên không dấu (tiếp)  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). 26 May 2012 IT3030 35
  36. NKK-HUT Bộ nhân số nguyên không dấu Sè bÞ nh©n Mn-1 Mn-2 . . . M1 M0 §iÒu khiÓn céng Bé logic ®iÒu khiÓn Bé céng n-bit céng vµ dÞch §iÒu khiÓn dÞch ph¶i C An-1 An-2 . . . A1 A0 Qn-1 Qn-2 . . . Q1 Q0 Sè nh©n 26 May 2012 IT3030 36
  37. NKK-HUT Lưu đồ nhân số nguyên không dấu B¾t ®Çu C 0, A  0 M  Sè bÞ nh©n Q  Sè nh©n Bé ®Õm := n No Yes Q0 = 1 ? C,A  A+M DÞch ph¶i C,A,Q Bé ®ÕmBé ®Õm-1 No Bé ®Õm = 0 ? Yes KÕt thóc TÝch trong AQ 26 May 2012 IT3030 37
  38. NKK-HUT 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 26 May 2012 IT3030 38
  39. NKK-HUT Ví dụ nhân số nguyên không dấu  Số bị nhân M = 0010 (2)  Số nhân Q = 0011 (3)  Tích = 0000 0110 (6) 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 26 May 2012 IT3030 39
  40. NKK-HUT Nhân số nguyên có dấu  Sử dụng thuật giải nhân không dấu  Sử dụng thuật giải Booth 26 May 2012 IT3030 40
  41. NKK-HUT Sử dụng thuật giải nhân không dấu  Bước 1. Chuyển đổi số bị nhân và số nhân thành số dương tương ứng  Bước 2. Nhân hai số dương bằng thuật giải nhân số nguyên không dấu, được tích của hai số dương.  Bước 3. Hiệu chỉnh dấu của tích:  Nếu hai thừa số ban đầu cùng dấu thì giữ nguyên kết quả ở bước 2.  Nếu hai thừa số ban đầu là khác dấu thì đảo dấu kết quả của bước 2 (lấy bù hai). 26 May 2012 IT3030 41
  42. NKK-HUT Thuật giải Booth ( xem sách COA-WS) 26 May 2012 IT3030 42
  43. NKK-HUT 5.4. Thực hiện phép chia 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ư 26 May 2012 IT3030 43
  44. NKK-HUT Bộ chia số nguyên không dấu Sè chia M Mn-1 Mn-2 . . . M1 M0 §iÒu khiÓn céng/trõ Bé logic ®iÒu khiÓn Bé céng/trõ n-bit céng/trõ vµ dÞch §iÒu khiÓn dÞch tr¸i An-1 An-2 . . . A1 A0 Qn-1 Qn-2 . . . Q1 Q0 Sè bÞ chia Q 26 May 2012 IT3030 44
  45. NKK-HUT Lưu đồ chia số nguyên không dấu B¾t ®Çu A  0 M  Sè chia Q  Sè bÞ chia Bé ®Õm  n DÞch tr¸i A,Q A  A - M No Yes A < 0 ? Q  0 Q 1 0 0 A  A + M Bé ®ÕmBé ®Õm-1 No Bé ®Õm = 0 ? Yes Th•¬ng ë Q KÕt thóc Sè d• ë A 26 May 2012 IT3030 45
  46. NKK-HUT 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 26 May 2012 IT3030 46
  47. NKK-HUT 5.5. Số dấu phẩy động 1. Nguyên tắc chung  Floating Point Number biểu diễn cho số thực  Tổng quát: một số thực X được biểu diễn theo kiểu số dấu phẩy động như sau: X = M * RE  M là phần định trị (Mantissa),  R là cơ số (Radix),  E là phần mũ (Exponent). 26 May 2012 IT3030 47
  48. NKK-HUT 2. Chuẩn IEEE754/85  Cơ số R = 2  Các dạng:  Dạng 32-bit  Dạng 44-bit  Dạng 64-bit  Dạng 80-bit 26 May 2012 IT3030 48
  49. NKK-HUT Các dạng biểu diễn chính 31 30 23 22 0 S e m 63 62 52 51 0 S e m 79 78 64 63 0 S e m 26 May 2012 IT3030 49
  50. NKK-HUT Dạng 32 bit 31 30 23 22 0 S e m  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: S e-127 X = (-1) *1.m * 2 26 May 2012 IT3030 50
  51. NKK-HUT Ví dụ 1 Xác định giá trị của số thực được biểu diễn bằng 32-bit như sau:  1100 0001 0101 0110 0000 0000 0000 0000  S = 1 số âm  e = 1000 00102 = 130 E = 130-127=3 Vậy 3 X = -1.10101100 * 2 = -1101.011 = -13.375  0011 1111 1000 0000 0000 0000 0000 0000 = ? = +1.0 26 May 2012 IT3030 51
  52. NKK-HUT Ví dụ 2 Biểu diễn số thực X= 83.75 về dạng số dấu phẩy động IEEE754 32-bit Giải: 6  X = 83.75(10) = 1010011.11(2) = 1.01001111 x 2  Ta có:  S = 0 vì đây là số dương  E = e-127 = 6 e = 127 + 6 = 133(10) = 1000 0101(2)  Vậy: X = 0100 0010 1010 0111 1000 0000 0000 0000 26 May 2012 IT3030 52
  53. NKK-HUT Ví dụ 3 Biểu diễn số thực X= -0,2 về dạng số dấu phẩy động IEEE754 32-bit Giải:  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 26 May 2012 IT3030 53
  54. NKK-HUT Bài tập Biểu diễn các số thực sau đây về dạng số dấu phẩy động IEEE754 32-bit: X = - 27.0625; Y = 1/32 26 May 2012 IT3030 54
  55. NKK-HUT Các qui ướ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 một bit bằng 1, thì nó không biểu diễn cho số nào cả (NaN - not a number) 26 May 2012 IT3030 55
  56. NKK-HUT Dải giá trị biểu diễn -127 +127  2 đến 2 -38 +38  10 đến 10 -2+127 -2-127 0 +2-127 +2+127 26 May 2012 IT3030 56
  57. NKK-HUT Dạng 64-bit  S là bit dấu  e (11 bit): mã excess-1023 của phần mũ E E = e – 1023  m (52 bit): phần lẻ của phần định trị M  Giá trị số thực: S e-1023 X = (-1) *1.m * 2 -308 +308  Dải giá trị biểu diễn: 10 đến 10 26 May 2012 IT3030 57
  58. NKK-HUT Dạng 80-bit  S là bit dấu  e (15 bit): mã excess-16383 của phần mũ E E = e – 16383  m (64 bit): phần lẻ của phần định trị M  Giá trị số thực: S e-16383 X = (-1) *1.m * 2 -4932 +4932  Dải giá trị biểu diễn: 10 đến 10 26 May 2012 IT3030 58
  59. NKK-HUT 3.Thực hiện phép toán số dấu phẩy động E1  X1 = M1 * R E2  X2 = M2 * R  Ta có E1+E2  X1 * X2 = (M1* M2) * R E1-E2  X1 / X2 = (M1 / M2) * R E1-E2 E2  X1 X2 = (M1*R M2) * R , với E2 E1 26 May 2012 IT3030 59
  60. NKK-HUT 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ị. 26 May 2012 IT3030 60
  61. NKK-HUT 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ị  Cộng hoặc trừ phần định trị  Chuẩn hoá kết quả 26 May 2012 IT3030 61
  62. NKK-HUT Thuật toán cộng/trừ số dấu phẩy động Trõ §æi dÊu cña Y N N Y Céng cã dÊu KÕt qu¶ Y Lµm trßn Céng X = 0 ? Y = 0 ? PhÇn mò b»ng nhau ? phÇn ®Þnh trÞ chuÈn ho¸? kÕt qu¶ Y Y N N Y Z  Y Z  X T¨ng phÇn mò Z  0 ®Þnh trÞ = 0 ? DÞch ph¶i Trë vÒ nhá h¬n phÇn ®Þnh trÞ Trë vÒ Trë vÒ N DÞch ph¶i §Þnh trÞ N Gi¶m phÇn mò phÇn ®Þnh trÞ bÞ trµn ? Y N DÞch ph¶i Y = 0 ? N PhÇn mò phÇn ®Þnh trÞ bÞ trµn d•íi ? Y CÊt sè kia T¨ng phÇn mò Y vµo Z Trë vÒ B¸o trµn d•íi Trë vÒ Y PhÇn mò N B¸o trµn bÞ trµn ? Trë vÒ 26 May 2012 IT3030 62
  63. NKK-HUT Thuật toán nhân số dấu phẩy động Nh©n N N X = 0 ? Y = 0 ? Céng phÇn mò Y Y Trõ cho ®é lÖch Z  0 Trë vÒ Trµn trªn Y Th«ng b¸o phÇn mò ? trµn trªn N Trµn d•íi Y Th«ng b¸o phÇn mò ? trµn d•íi N Nh©n phÇn Trë vÒ ®Þnh trÞ ChuÈn ho¸ Lµm trßn Trë vÒ 26 May 2012 IT3030 63
  64. NKK-HUT Thuật toán chia số dấu phẩy động Chia N N X = 0 ? Y = 0 ? Trõ phÇn mò Y Y Céng thªm Z  0 Z  ®é lÖch Trë vÒ Trµn trªn Y Th«ng b¸o phÇn mò ? trµn trªn N Y Trµn d•íi Th«ng b¸o phÇn mò ? trµn d•íi N Chia phÇn Trë vÒ ®Þnh trÞ ChuÈn ho¸ Lµm trßn Trë vÒ 26 May 2012 IT3030 64
  65. NKK-HUT Hết chương 5 26 May 2012 IT3030 65
  66. NKK-HUT Giải bài tập 4 X = -27.0625(10) = -11011.0001(2) = -1.10110001 x 2  Ta có:  S = 1  E = e-127 = 4 e = 127 + 4 = 131(10) = 1000 0011(2)  Vậy: X = 1100 0001 1101 1000 1000 0000 0000 0000 -5 Y = 1/32(10) = 1.0 x 2  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 26 May 2012 IT3030 66