intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kiến trúc máy tính: Chương 3 - Nguyễn Kim Khánh

Chia sẻ: Codon_03 Codon_03 | Ngày: | Loại File: PDF | Số trang:26

107
lượt xem
14
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Kiến trúc máy tính: Chương 3 - Số học máy tính hướng đến trình bày các hệ đếm cơ bản; mã hóa và lưu trữ dữ liệu trong máy tính; biểu diễn số nguyên; thực hiện các phép toán số học với số nguyên; số dấu phẩy động;...

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kiến trúc máy tính: Chương 3 - Nguyễn Kim Khánh

  1. Bài giảng Kiến trúc máy tính 18 March 2007 NKK-HUT NKK-HUT Kiến trúc máy tính Nội dung giáo trình „ Chương 1. Giới thiệu chung Chương 2. Hệ thống máy tính Chương 3 „ „ Chương 3. Số học máy tính SỐ HỌC MÁY TÍNH „ Chương 4. Bộ xử lý trung tâm „ Chương 5. Bộ nhớ máy tính „ Chương 6. Hệ thống vào-ra „ Chương 7. Kiến trúc máy tính tiên tiến Nguyễn Kim Khánh Trường Đại học Bách khoa Hà Nội 18 March 2007 Bài giảng Kiến trúc Máy tính 1 18 March 2007 Bài giảng Kiến trúc Máy tính 2 NKK-HUT NKK-HUT Nội dung chương 3 3.1. Các hệ đếm cơ bản 3.1. Các hệ đếm cơ bản „ Hệ thập phân (Decimal System) 3.2. Mã hóa và lưu trữ dữ liệu trong máy tính Æ con người sử dụng 3.3. Biểu diễn số nguyên 3.4. Thực hiện các phép toán số học với số nguyên „ Hệ nhị phân (Binary System) 3.5. Số dấu phẩy động Æ máy tính sử dụng 3.6. Biểu diễn ký tự „ Hệ mười sáu (Hexadecimal System) Æ dùng để viết gọn cho số nhị phân 18 March 2007 Bài giảng Kiến trúc Máy tính 3 18 March 2007 Bài giảng Kiến trúc Máy tính 4 Nguyễn Kim Khánh - ĐHBKHN 1
  2. Bài giảng Kiến trúc máy tính 18 March 2007 NKK-HUT NKK-HUT 1. Hệ thập phân Dạng tổng quát của số thập phân „ Cơ số 10 Giá trị của A được hiểu như sau: „ 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 A = a n a n −1 ... a1 a 0 , a −1 ... a − m được 10n giá trị khác nhau: A = a n 10 n + a n −110 n −1 + ... + a1101 + a 0 10 0 + a −110 −1 + ... + a − m 10 − m „ 00...000 = 0 „ 99...999 = 10n - 1 n A = ∑ a 10 i=− m i i 18 March 2007 Bài giảng Kiến trúc Máy tính 5 18 March 2007 Bài giảng Kiến trúc Máy tính 6 NKK-HUT NKK-HUT Ví dụ số thập phân 2. Hệ nhị phân 472.38 = 4x102 + 7x101 + 2x100 + 3x10-1 + 8x10-2 „ Cơ số 2 „ Các chữ số của phần nguyên: „ 2 chữ số nhị phân: 0 và 1 „ 472 : 10 = 47 dư 2 „ chữ số nhị phân gọi là bit (binary digit) „ 47 : 10 = 4 dư 7 „ Bit là đơn vị thông tin nhỏ nhất „ 4 : 10 = 0 dư 4 „ Dùng n bit có thể biểu diễn được 2n giá trị khác nhau: „ Các chữ số của phần lẻ: „ 00...000 = 0 „ 0.38 x 10 = 3.8 phần nguyên = 3 „ 11...111 = 2n - 1 „ 0.8 x 10 = 8.0 phần nguyên = 8 18 March 2007 Bài giảng Kiến trúc Máy tính 7 18 March 2007 Bài giảng Kiến trúc Máy tính 8 Nguyễn Kim Khánh - ĐHBKHN 2
  3. Bài giảng Kiến trúc máy tính 18 March 2007 NKK-HUT NKK-HUT Dạng tổng quát của số nhị phân Ví dụ số nhị phân Có một số nhị phân A như sau: 1101001.1011(2) = 6 5 4 3 2 1 0 -1 -2 -3 -4 A = a n a n −1 ... a1 a 0 , a −1 ... a − m = 26 + 25 + 23 + 20 + 2-1 + 2-3 + 2-4 Giá trị của A được tính như sau: = 64 + 32 + 8 + 1 + 0.5 + 0.125 + 0.0625 n −1 −1 −m A = a n 2 + a n −1 2 n + ... + a1 2 + a 0 2 + a −1 2 + ... + a − m 2 1 0 n = 105.6875(10) A = ∑a 2 i=−m i i 18 March 2007 Bài giảng Kiến trúc Máy tính 9 18 March 2007 Bài giảng Kiến trúc Máy tính 10 NKK-HUT NKK-HUT Chuyển đổi số nguyên thập phân sang nhị phân Phương pháp chia dần cho 2 „ Ví dụ: chuyển đổi 105(10) 105 : 2 = 52 dư 1 „ Phương pháp 1: chia dần cho 2 rồi lấy „ 52 : 2 = 26 dư 0 phần dư „ „ 26 : 2 = 13 dư 0 „ Phương pháp 2: Phân tích thành tổng „ 13 : 2 = 6 dư 1 của các số 2i Æ nhanh hơn „ 6:2 = 3 dư 0 „ 3:2 = 1 dư 1 „ 1:2 = 0 dư 1 „ Kết quả: 105(10) = 1101001(2) 18 March 2007 Bài giảng Kiến trúc Máy tính 11 18 March 2007 Bài giảng Kiến trúc Máy tính 12 Nguyễn Kim Khánh - ĐHBKHN 3
  4. Bài giảng Kiến trúc máy tính 18 March 2007 NKK-HUT NKK-HUT Phương pháp phân tích thành tổng của các 2i Chuyển đổi số lẻ thập phân sang nhị phân „ Ví dụ 1: chuyển đổi 105(10) „ 105 = 64 + 32 + 8 +1 = 2 + 2 + 2 + 2 6 5 3 0 „ Ví dụ 1: chuyển đổi 0.6875(10) „ 0.6875 x 2 = 1.375 phần nguyên = 1 27 26 25 24 23 22 21 20 „ 0.375 x 2 = 0.75 phần nguyên = 0 128 64 32 16 8 4 2 1 0 1 1 0 1 0 0 1 „ 0.75 x 2 = 1.5 phần nguyên = 1 „ 0.5 x 2 = 1.0 phần nguyên = 1 „ Kết quả: 105(10) = 0110 1001(2) „ Ví dụ 2: 17000(10) = 16384 + 512 + 64 + 32 + 8 „ Kết quả : 0.6875(10)= 0.1011(2) = 214 + 29 + 26 + 25 + 23 17000(10) = 0100 0010 0110 1000(2) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 18 March 2007 Bài giảng Kiến trúc Máy tính 13 18 March 2007 Bài giảng Kiến trúc Máy tính 14 NKK-HUT NKK-HUT Chuyển đổi số lẻ thập phân sang nhị phân (tiếp) Chuyển đổi số lẻ thập phân sang nhị phân (tiếp) „ Ví dụ 2: chuyển đổi 0.81(10) „ Ví dụ 3: chuyển đổi 0.2(10) „ 0.81 x 2 = 1.62 phần nguyên = 1 „ 0.2 x2 = 0.4 phần nguyên = 0 „ 0.62 x 2 = 1.24 phần nguyên = 1 „ 0.4 x2 = 0.8 phần nguyên = 0 „ 0.24 x 2 = 0.48 phần nguyên = 0 „ 0.8 x2 = 1.6 phần nguyên = 1 „ 0.6 x2 = 1.2 phần nguyên = 1 „ 0.48 x 2 = 0.96 phần nguyên = 0 „ 0.2 x2 = 0.4 phần nguyên = 0 „ 0.96 x 2 = 1.92 phần nguyên = 1 „ 0.4 x2 = 0.8 phần nguyên = 0 „ 0.92 x 2 = 1.84 phần nguyên = 1 „ 0.8 x2 = 1.6 phần nguyên = 1 „ 0.84 x 2 = 1.68 phần nguyên = 1 „ 0.6 x2 = 1.2 phần nguyên = 1 „ 0.81(10) ≈ 0.1100111(2) „ 0.2(10) ≈ 0.00110011 (2) 18 March 2007 Bài giảng Kiến trúc Máy tính 15 18 March 2007 Bài giảng Kiến trúc Máy tính 16 Nguyễn Kim Khánh - ĐHBKHN 4
  5. Bài giảng Kiến trúc máy tính 18 March 2007 NKK-HUT NKK-HUT 3. Hệ mười sáu (Hexa) Quan hệ giữa số nhị phân và số Hexa 4-bit Chữ số Hexa 0000 0 Ví dụ chuyển đổi số nhị phân Æ số Hexa: „ Cơ số 16 0001 1 „ 1011 00112 = B316 „ 16 chữ số: 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F 0010 2 0011 3 „ 0000 00002 = 0016 „ Dùng để viết gọn cho số nhị phân: cứ một 0100 4 nhóm 4-bit sẽ được thay bằng một chữ số 0101 5 „ 0010 1101 1001 10102 = 2D9A16 0110 6 Hexa 0111 7 „ 1111 1111 1111 11112 = FFFF16 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F 18 March 2007 Bài giảng Kiến trúc Máy tính 17 18 March 2007 Bài giảng Kiến trúc Máy tính 18 NKK-HUT NKK-HUT 3.2. Mã hóa và lưu trữ dữ liệu trong máy tính Mã hoá dữ liệu nhân tạo 1. Nguyên tắc chung về mã hóa dữ liệu „ Mã hóa theo các chuẩn qui ước „ Mọi dữ liệu đưa vào máy tính đều phải „ Dữ liệu số: được mã hóa thành số nhị phân „ Số nguyên: mã hóa theo một số chuẩn „ Các loại dữ liệu „ Số thực: mã hóa bằng số dấu phẩy động „ Dữ liệu nhân tạo: do con người qui ước „ Dữ liệu ký tự: mã hóa theo bộ mã ký tự „ Dữ liệu tự nhiên: tồn tại khách quan với con người 18 March 2007 Bài giảng Kiến trúc Máy tính 19 18 March 2007 Bài giảng Kiến trúc Máy tính 20 Nguyễn Kim Khánh - ĐHBKHN 5
  6. Bài giảng Kiến trúc máy tính 18 March 2007 NKK-HUT NKK-HUT Mã hóa và tái tạo tín hiệu vật lý Độ dài từ dữ liệu „ Độ dài từ dữ liệu là số bit được sử dụng để mã hóa loại dữ liệu tương ứng „ Thường là bội của 8-bit „ VD: 8, 16, 32, 64 bit Các dữ liệu vật lý thông dụng „ Âm thanh „ Hình ảnh 18 March 2007 Bài giảng Kiến trúc Máy tính 21 18 March 2007 Bài giảng Kiến trúc Máy tính 22 NKK-HUT NKK-HUT 2. Thứ tự lưu trữ các byte trong bộ nhớ chính Ví dụ lưu trữ dữ liệu 32-bit „ Bộ nhớ chính thường tổ chức theo byte 0001 1010 0010 1011 0011 1100 0100 1101 „ Hai cách lưu trữ dữ liệu nhiều byte: „ Đầu nhỏ (Little-endian): Byte có ý nghĩa thấp được lưu trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa cao được lưu trữ ở ngăn nhớ có địa chỉ lớn. „ Đầu to (Big-endian): Byte có ý nghĩa cao được lưu trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa thấp được lưu trữ ở ngăn nhớ có địa chỉ lớn. 18 March 2007 Bài giảng Kiến trúc Máy tính 23 18 March 2007 Bài giảng Kiến trúc Máy tính 24 Nguyễn Kim Khánh - ĐHBKHN 6
  7. Bài giảng Kiến trúc máy tính 18 March 2007 NKK-HUT NKK-HUT Lưu trữ của các bộ xử lý điển hình 3.3. Biểu diễn số nguyên „ Intel 80x86 và các Pentium: little-endian „ Số nguyên không dấu (Unsigned Integer) „ Motorola 680x0, SunSPARC: big-endian „ Số nguyên có dấu (Signed Integer) „ Power PC, Itanium: bi-endian 18 March 2007 Bài giảng Kiến trúc Máy tính 25 18 March 2007 Bài giảng Kiến trúc Máy tính 26 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 a0 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 18 March 2007 Bài giảng Kiến trúc Máy tính 27 18 March 2007 Bài giảng Kiến trúc Máy tính 28 Nguyễn Kim Khánh - ĐHBKHN 7
  8. Bài giảng Kiến trúc máy tính 18 March 2007 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 18 March 2007 Bài giảng Kiến trúc Máy tính 29 18 March 2007 Bài giảng Kiến trúc Máy tính 30 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 18 March 2007 Bài giảng Kiến trúc Máy tính 31 18 March 2007 Bài giảng Kiến trúc Máy tính 32 Nguyễn Kim Khánh - ĐHBKHN 8
  9. Bài giảng Kiến trúc máy tính 18 March 2007 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 18 March 2007 Bài giảng Kiến trúc Máy tính 33 18 March 2007 Bài giảng Kiến trúc Máy tính 34 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 18 March 2007 Bài giảng Kiến trúc Máy tính 35 18 March 2007 Bài giảng Kiến trúc Máy tính 36 Nguyễn Kim Khánh - ĐHBKHN 9
  10. Bài giảng Kiến trúc máy tính 18 March 2007 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 18 March 2007 Bài giảng Kiến trúc Máy tính 37 18 March 2007 Bài giảng Kiến trúc Máy tính 38 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 18 March 2007 Bài giảng Kiến trúc Máy tính 39 18 March 2007 Bài giảng Kiến trúc Máy tính 40 Nguyễn Kim Khánh - ĐHBKHN 10
  11. Bài giảng Kiến trúc máy tính 18 March 2007 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 18 March 2007 Bài giảng Kiến trúc Máy tính 41 18 March 2007 Bài giảng Kiến trúc Máy tính 42 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: Æ do tràn xảy ra 0111 1111 = +127 „ 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 18 March 2007 Bài giảng Kiến trúc Máy tính 43 18 March 2007 Bài giảng Kiến trúc Máy tính 44 Nguyễn Kim Khánh - ĐHBKHN 11
  12. Bài giảng Kiến trúc máy tính 18 March 2007 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 18 March 2007 Bài giảng Kiến trúc Máy tính 45 18 March 2007 Bài giảng Kiến trúc Máy tính 46 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 18 March 2007 Bài giảng Kiến trúc Máy tính 47 18 March 2007 Bài giảng Kiến trúc Máy tính 48 Nguyễn Kim Khánh - ĐHBKHN 12
  13. Bài giảng Kiến trúc máy tính 18 March 2007 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: 18 March 2007 Bài giảng Kiến trúc Máy tính 49 18 March 2007 Bài giảng Kiến trúc Máy tính 50 NKK-HUT NKK-HUT Phép cộng số BCD 3.4. Thực hiện các phép toán số học 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) 18 March 2007 Bài giảng Kiến trúc Máy tính 51 18 March 2007 Bài giảng Kiến trúc Máy tính 52 Nguyễn Kim Khánh - ĐHBKHN 13
  14. Bài giảng Kiến trúc máy tính 18 March 2007 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 18 March 2007 Bài giảng Kiến trúc Máy tính 53 18 March 2007 Bài giảng Kiến trúc Máy tính 54 NKK-HUT NKK-HUT 2. Phép đảo dấu 3. Cộng số nguyên có dấu „ Ta có: + 37 = 0010 0101 Khi cộng hai số nguyên có dấu n-bit, kết quả 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)] 18 March 2007 Bài giảng Kiến trúc Máy tính 55 18 March 2007 Bài giảng Kiến trúc Máy tính 56 Nguyễn Kim Khánh - ĐHBKHN 14
  15. Bài giảng Kiến trúc máy tính 18 March 2007 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 18 March 2007 Bài giảng Kiến trúc Máy tính 57 18 March 2007 Bài giảng Kiến trúc Máy tính 58 NKK-HUT NKK-HUT 4. Nguyên tắc thực hiện phép trừ 5. Nhân số nguyên không dấu „ Phép trừ hai số nguyên: X-Y = X+(-Y) „ 1011 Số bị nhân (11) „ Nguyên tắc: Lấy bù hai của Y để được –Y, rồi cộng với X x 1101 Số nhân (13) 1011 0000 Các tích riêng phần 1011 1011 10001111 Tích (143) 18 March 2007 Bài giảng Kiến trúc Máy tính 59 18 March 2007 Bài giảng Kiến trúc Máy tính 60 Nguyễn Kim Khánh - ĐHBKHN 15
  16. Bài giảng Kiến trúc máy tính 18 March 2007 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). 18 March 2007 Bài giảng Kiến trúc Máy tính 61 18 March 2007 Bài giảng Kiến trúc Máy tính 62 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 18 March 2007 Bài giảng Kiến trúc Máy tính 63 18 March 2007 Bài giảng Kiến trúc Máy tính 64 Nguyễn Kim Khánh - ĐHBKHN 16
  17. Bài giảng Kiến trúc máy tính 18 March 2007 NKK-HUT NKK-HUT 6. 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 nhân không dấu „ Bước 1. Chuyển đổi số bị nhân và số „ Sử dụng thuật giải Booth 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. 18 March 2007 Bài giảng Kiến trúc Máy tính 65 18 March 2007 Bài giảng Kiến trúc Máy tính 66 NKK-HUT NKK-HUT B¾t ®Çu Thuật giải Booth 7. Chia số nguyên không dấu A := 0, Q-1 := 0 M := Sè bÞ nh©n Q := Sè nh©n Bé ®Õm := n Số bị chia 10010011 1011 Số chia =10 =01 1011 00001101 Thương Q0,Q-1 = ? 001110 A := A - M =00 A := A + M 1011 =11 001111 1011 DÞch ph¶i sè häc A,Q,Q-1 Bé ®Õm:=Bé ®Õm-1 100 Phần dư No Bé ®Õm = 0 ? Yes KÕt thóc 18 March 2007 Bài giảng Kiến trúc Máy tính 67 18 March 2007 Bài giảng Kiến trúc Máy tính 68 Nguyễn Kim Khánh - ĐHBKHN 17
  18. Bài giảng Kiến trúc máy tính 18 March 2007 NKK-HUT NKK-HUT Bộ chia số nguyên không dấu Lưu đồ chia số nguyên không dấu 18 March 2007 Bài giảng Kiến trúc Máy tính 69 18 March 2007 Bài giảng Kiến trúc Máy tính 70 NKK-HUT NKK-HUT 8. Chia số nguyên có dấu 3.5. Số dấu phẩy động „ Bước 1. Chuyển đổi số bị chia và số chia về thành số 1. Nguyên tắc chung dương tương ứng. „ Floating Point Number Æ biểu diễn cho số „ 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à thực phần dư R đều là dương „ Tổng quát: một số thực X được biểu diễn „ Bước 3. Hiệu chỉnh dấu của kết quả như sau: theo kiểu số dấu phẩy động như sau: (Lưu ý: phép đảo dấu thực chất là thực hiện phép lấy bù hai) X = M * RE Số bị chia Số chia Thương Số dư „ M là phần định trị (Mantissa), dương dương giữ nguyên giữ nguyên „ R là cơ số (Radix), dương âm đảo dấu giữ nguyên âm dương đảo dấu đảo dấu „ E là phần mũ (Exponent). âm âm giữ nguyên đảo dấu 18 March 2007 Bài giảng Kiến trúc Máy tính 71 18 March 2007 Bài giảng Kiến trúc Máy tính 72 Nguyễn Kim Khánh - ĐHBKHN 18
  19. Bài giảng Kiến trúc máy tính 18 March 2007 NKK-HUT NKK-HUT 2. Chuẩn IEEE754/85 Các dạng biểu diễn chính „ Cơ số R = 2 „ Các dạng: „ Dạng 32-bit „ Dạng 44-bit „ Dạng 64-bit „ Dạng 80-bit 18 March 2007 Bài giảng Kiến trúc Máy tính 73 18 March 2007 Bài giảng Kiến trúc Máy tính 74 NKK-HUT NKK-HUT Dạng 32 bit Ví dụ 1 Xác định giá trị của số thực được biểu diễn bằng 32-bit như sau: „ S là bit dấu: „ 1100 0001 0101 0110 0000 0000 0000 0000 „ S = 0 Æ số dương „ S = 1 Æ số âm „ S = 1 Æ số âm „ e = 1000 00102 = 130 Æ E = 130-127=3 „ e (8 bit) là mã excess-127 của phần mũ E: „ e = E+127 Æ E = e – 127 Vậy „ giá trị 127 gọi là là độ lệch (bias) X = -1.10101100 * 23 = -1101.011 = -13.375 „ m (23 bit) là phần lẻ của phần định trị M: „ M = 1.m „ 0011 1111 1000 0000 0000 0000 0000 0000 = ? „ Công thức xác định giá trị của số thực: = +1.0 X = (-1)S*1.m * 2e-127 18 March 2007 Bài giảng Kiến trúc Máy tính 75 18 March 2007 Bài giảng Kiến trúc Máy tính 76 Nguyễn Kim Khánh - ĐHBKHN 19
  20. Bài giảng Kiến trúc máy tính 18 March 2007 NKK-HUT NKK-HUT Ví dụ 2 Ví dụ 3 Biểu diễn số thực X= 83.75 về dạng số dấu phẩy Biểu diễn số thực X= -0,2 về dạng số dấu phẩy động IEEE754 32-bit động IEEE754 32-bit Giải: Giải: „ X = 83.75(10) = 1010011.11(2) = 1.01001111 x 26 „ X = -0,2(10) = - 0.00110011...0011...(2) = = - 1.100110011..0011... x 2-3 „ Ta có: „ S = 0 vì đây là số dương „ Ta có: „ S = 1 vì đây là số âm „ E = e-127 = 6 Æ e = 127 + 6 = 133(10) = 1000 0101(2) „ E = e-127 = -3 Æ e = 127 -3 = 124(10) = 0111 1100(2) „ Vậy: „ Vậy: X = 0100 0010 1010 0111 1000 0000 0000 0000 X = 1011 1110 0100 1100 1100 1100 1100 1100 18 March 2007 Bài giảng Kiến trúc Máy tính 77 18 March 2007 Bài giảng Kiến trúc Máy tính 78 NKK-HUT NKK-HUT Bài tập Các qui ước đặc biệt Biểu diễn các số thực sau đây về dạng số „ Các bit của e bằng 0, các bit của m bằng 0, thì X = ± 0 dấu phẩy động IEEE754 32-bit: x000 0000 0000 0000 0000 0000 0000 0000 Æ X = ± 0 X = - 27.0625; Y = 1/32 „ 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) 18 March 2007 Bài giảng Kiến trúc Máy tính 79 18 March 2007 Bài giảng Kiến trúc Máy tính 80 Nguyễn Kim Khánh - ĐHBKHN 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2