Kiến trúc và tổ chức máy tính - Chương 2: Biểu diễn thông tin trong máy tính

1. Các hệ đếm cơ bản 2. Biểu diễn số nguyên 3. Các phép toán số học đối với số nguyên 4. Số dấu phẩy động

pdf41 trang | Chia sẻ: thuychi16 | Lượt xem: 1377 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Kiến trúc và tổ chức máy tính - Chương 2: Biểu diễn thông tin trong máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
bangtqh@utc2.edu.vn KIẾN TRÚC VÀ TỔ CHỨC MÁY TÍNH (Computer Organization and Architecture) Chương 2 Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Nội dung 1. Các hệ đếm cơ bản 2. Biểu diễn số nguyên 3. Các phép toán số học đối với số nguyên 4. Số dấu phẩy động 2Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn 2.1. Các hệ đếm cơ bản Hệ thập phân (Decimal System) → Con người sử dụng. Hệ nhị phân (Binary System) → Máy tính sử dụng Hệ bát phân (Octal System) → Dùng để viết gọn số nhị phân Hệ thập lục phân (Hexadecimal System) → Dùng để viết gọn số nhị phân 3Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Hệ thập phân (Decimal System) Cơ số 10 Dùng 10 ký số: 0, 1, 2, ..., 9 Dùng n chữ số thập phân có thể biểu diễn được 10n giá trị khác nhau: • 00...0 = 0 • 99...9 = 10n – 1 4Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Hệ thập phân (tt) Quy tắc đếm 5Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ 215.37 = 2*102 + 1*101 + 5*100 + 3*10-1 + 7*10-2 Các chữ số phần nguyên: 215 : 10 = 21 dư 5 21 : 10 = 2 dư 1 2 : 10 = 0 dư 2 Các chữ số phần thập phân: 0.37 * 10 = 3.7 phần nguyên = 3 0.7 * 10 = 7.0 phần nguyên = 7 6Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Hệ nhị phân (Binary System) Cơ số 2 Dùng 2 chữ số: 0, 1 Chữ số nhị phân gọi là bit (binary digit) Bit là đơn vị thông tin nhỏ nhất Dùng n chữ số nhị phân có thể biểu diễn được 2n giá trị khác nhau: 00...0 = 0 11...1 = 2n - 1 7Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Hệ nhị phân (tt) 8Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Hệ nhị phân (tt) Quy tắc đếm 9Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ Có số nhị phân như sau: 1011 1001.101(2) Khi đó, giá trị của chúng được tính là: 1011 1001.101(2) = = 27 + 25 + 24 + 23 + 20 + 2-1 + 2-3 = 128 + 32 + 16 + 8 + 1 + 0.5 + 0.125 = 185.625(10) 10Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Hệ Bát phân (Octal System) Cơ số 8 Dùng 8 chữ số: 0, 1, 2, 3, 4, 5, 6, 7 Dùng n chữ số bát phân có thể biểu diễn được 8n giá trị khác nhau: • 00...0 = 0 • 77...7 = 8n – 1 11Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Hệ bát phân (tt) Quy tắc đếm 12Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Hệ thập lục phân (Hexadecimal System) Cơ số 16 Dùng 16 chữ số: 0,1,..., 9, A, B, ..., F Dùng để viết gọn cho số nhị phân: cứ một nhóm 4 bit sẽ được thay bằng một chữ số Hexa Dùng n chữ số Hexa có thể biểu diễn được 16n giá trị khác nhau: • 00...0 = 0 • FF...F = 16n - 1 13Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Hệ thập lục phân (tt) Quy tắc đếm 14Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Tổng quát 15Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Chuyển đổi giữa các hệ đếm 16Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Bảng mã 8421 17Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Chuyển đổi tổng quát 18Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Phương pháp ghép nhóm 19Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Chuyển đổi số thập phân → nhị phân Chuyển đổi phần nguyên: – Cách 1: Chia liên tiếp cho 2 rồi lấy phần dư – Cách 2: Phân tích thành tổng các luỹ thừa của 2 Chuyển đổi phần thập phân: – Nhân phần thập phân với 2, lấy phần nguyên 20Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ chuyển đổi Có số ở hệ thập phân như sau: 61.3125 – Chuyển đổi phần nguyên: 61(10) = 111101(2) – Chuyển đổi phần thập phân: • 0.3125 * 2 = 0.625 phần nguyên = 0 • 0.625 * 2 = 1.25 phần nguyên = 1 • 0.25 * 2 = 0.5 phần nguyên = 0 • 0.5 * 2 = 1.0 phần nguyên = 1 – Vậy: 61.3125(10) = 111101.0101(2) 21Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Mã hoá dữ liệu trong máy tính Nguyên tắc chung – Mọi dữ liệu đưa vào máy tính đều phải được mã hoá thành số nhị phân – Các loại dữ liệu: • Dữ liệu nhân tạo: do con người quy ước • Dữ liệu tự nhiên: tồn tại khách quan với con người Mã hoá dữ liệu nhân tạo: • Dữ liệu dạng số: mã hoá theo chuẩn quy ước • Dữ liệu ký tự: mã hoá theo bộ mã ký tự 22Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Mã hoá dữ liệu trong máy tính (tt)  Mã hoá và tái tạo tín hiệu tự nhiên ADC DAC TH số TH số TH Ltục TH Ltục TH V.lý TH V.lý MT Bộ tạo tín hiệu Bộ tái tạo tín hiệu 23Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Mã hoá dữ liệu trong máy tính (tt) 24Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Mã hoá dữ liệu trong máy tính (tt) 25Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Lưu trữ dữ liệu trong máy tính Bộ nhớ chính được tổ chức theo byte Độ dài dữ liệu có thể chiếm 1 hay nhiều byte Có 2 cách lưu trữ các byte trong bộ nhớ chính: – Little-endian (đầu nhỏ): byte có ý nghĩa thấp hơn được lưu trữ ở vị trí có địa chỉ nhỏ hơn – Big-endian (đầu to): byte có ý nghĩa thấp hơn được lưu trữ ở vị trí có địa chỉ lớn hơn 26Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ lưu trữ dữ liệu 32 bit 12 34 56 78 . . . Địa chỉ 78 X 56 X +1 34 X + 2 12 X + 3 . . . đầu nhỏ . . . Địa chỉ 12 X 34 X +1 56 X + 2 78 X + 3 . . . đầu to Ví dụ: Intel 80x86, Px: đầu nhỏ Motorola 680x0: đầu to Power PC, Itanium: cả hai loại 27Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn 2.2. Biểu diễn số nguyên Số nguyên không dấu (unsigned integer) Số nguyên có dấu (signed integer) Chuyển đổi độ dài Bài tập 28Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Số nguyên không dấu Nguyên tắc chung – Dùng n chữ số nhị phân thì biểu diễn được 2n số – Dải biểu diễn: 0 ÷ 2n – 1 – Ví dụ: • n = 8 bit: Dải biểu diễn: 0 ÷ 28 -1, hay 0 ÷ 255 • n = 16 bit: Dải biểu diễn: 0 ÷ 216 - 1, hay 0 ÷ 65535 • n = 32 bit: Dải biểu diễn: 0 ÷ 232 – 1, 0÷4294967295 Cách biểu diễn – Biểu diễn ở dạng nhị phân một cách bình thường 29Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Hiện tượng tràn số 30Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Các ví dụ Ví dụ 1: biểu diễn các số nguyên không dấu sau đây dùng 8 bit: A = 73; B = 138 Giải: – A = 73 = 64 + 8 + 1 = 26 + 23 + 20 73 = 0100 1001 – B = 138 = 128 + 8 + 2 = 27 + 23 + 21 138 = 1000 1010 31Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Các ví dụ (tt) Ví dụ 2: Hãy xác định giá trị của các số nguyên không dấu C, D được biểu diễn bằng 8 bit như sau: C = 0010 1010; D = 1010 0110 Giải: – C = 0010 1010 = 25 + 23 + 21 = 32 + 8 + 2 = 42 – D = 1010 0110 = 27 + 25 + 22 + 21 = = 128 + 32 + 4 + 2 = 166 32Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Số nguyên có dấu Nguyên tắc chung – Dùng n chữ số nhị phân thì biểu diễn được 2n số – Dải biểu diễn: - 2n-1 ÷ 2n-1 – 1 – Ví dụ: • n = 8 bit: Dải biểu diễn: - 27 ÷ 27 -1, hay -128 ÷ 127 • n = 16 bit: - 215 ÷ 215 - 1, hay - 32768 ÷ 32767 • n = 32 bit: - 231 ÷ 231 - 1, hay - 2147483648 ÷ 2147483647 Cách biểu diễn: – PP1: Dùng dấu và độ lớn (Sign-Magnitude) – PP2: Dùng mã bù 2 (Two’s complement) 33Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Dùng dấu và độ lớn Bit lớn nhất biểu diễn dấu: – 0: biểu diễn số dương – 1: biểu diễn số âm Các bit còn lại biểu diễn giá trị – Ví dụ: +23 = 0001 0111; -23 = 1001 0111 Vấn đề nảy sinh – Cần quan tâm cả phần dấu và phần độ lớn khi thực hiện các phép toán số học – Có đến 2 cách biểu diễn cho số 0 (+0 và -0) 34Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Dùng mã bù 2 Đối với số dương: biểu diễn dạng nhị phân Đối với số âm: tìm số bù 2: – B1: đổi số dương tương ứng → nhị phân – B2: tìm số bù 1 (đảo bit 1 → 0, 0 → 1) – B3: tìm số bù 2: số bù 1 cộng với 1 Số bù 2 thu được chính là cách biểu diễn số âm Đặc điểm: – Thực hiện các phép toán số học dễ dàng – Chỉ có một sự biểu diễn duy nhất cho số 0 35Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Dùng mã bù 2 (tt) Dạng tổng quát của số nguyên A A = an-1an-2.a2a1a0 Giá trị của A được tính bởi công thức: Dải giá trị của số nguyên sử dụng n bit: -2n-1 ÷ 2n-1 – 1 - 8 bit: -128 ÷ 127 - 16 bit: -32 768 ÷ 32 767 - 32 bit: -2 147 483 648 ÷ 2 147 483 647 36Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn 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 = + 69; B = - 92 Giải: A = + 69 = 0100 0101 B = - 92 Ta có: + 92 = 0101 1100 Số bù 1 = 1010 0011 1 Số bù 2 = 1010 0100 Vậy: B = -92 = 1010 0100 + 37Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Các ví dụ Ví dụ 2: Xác định giá trị của các số nguyên có dấu biểu diễn dưới đây (dùng dấu - độ lớn): C = 0110 1010; D = 1100 0011 Giải: C = 0110 1010 = + (64 + 32 + 8 + 2) = 106 D = 1100 0011 = - (64 + 2 + 1) = - 67 38Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Các ví dụ Ví dụ 3: Xác định giá trị của các số nguyên có dấu được biểu diễn dưới đây (dùng mã bù 2): E = 0101 1110; F = 1101 1010 Giải: E = 0101 1110 = 64 + 16 + 8 + 4 + 2 = 94 F = 1101 1010 = -128 + 64 + 16 + 8 + 2 = -38 39Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Chuyển đổi độ dài (byteword) Đối với số dương: thêm/bớt số 0 ở trước: +23 = 0001 0111 (8 bit) +23 = 0000 0000 0001 0111 (16 bit) Đối với số âm: thêm/bớt số 1 ở trước -23 = 1110 1001 (8 bit) -23 = 1111 1111 1110 1001 (16 bit) 40Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Biểu diễn số nguyên theo mã BCD BCD – Binary Coded Decimal – Được dùng để tính toán số thập phân trong hệ nhị phân – Là số viết theo hệ cơ số 16 nhưng tính theo hệ cơ số 10 • 12BCD  trong hệ nhị phân là 0001 0010  có giá trị là 12 chứ không phải giá trị 18 (1216 = 18) • Dùng 4 bit để mã hóa cho các chữ số thập phân từ 09 (xem lại bảng mã 8421 phần các số từ 0-9) • Có 6 tổ hợp bit không sử dụng: 1010; 1011; 1100; 1101; 1110; 1111 41Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Các kiểu lưu trữ số BCD BCD không gói (unpacked BCD) – Mỗi số BCD-4bit được lưu trữ trong 4 bit thấp của byte – Ví dụ: Số 35 được lưu trong 2 byte BCD gói (packed BCD) – Hai số BCD-4bit được lưu chung trong 1 byte – Ví dụ: Số 35 được lưu trong 1 byte 42 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn 2.3. Các phép toán trên số nguyên Phép cộng: thực hiện như cách tính tay thông thường nhưng ở hệ nhị phân Phép trừ: Thực hiện bằng cách cộng số bị trừ với bù 2 của số trừ – Ví dụ: A=1001, B=0011 có bù hai là 1101 – Vậy A-B = 1001+1101 = (1)0110 . Số (1) là số nhớ (carry) 43 Cộng Kết quả Nhớ 0 + 0 0 0 0 + 1 1 0 1 + 0 1 0 1 + 1 0 1 Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Bài tập 1. Số nhị phân 8 bit (11001100), số này tương ứng với số nguyên thập phân có dấu là bao nhiêu nếu số trên được biểu diễn ở dạng: - Số bù 1. - Số bù 2. 2. Đổi các số sau đây: a. (011011)2 ra số thập phân. b. (-2005)10 ra số nhị phân 16 bits. c. (55.875)10 ra số nhị phân. 44Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn 2.3. Các phép toán trên số nguyên (tt) Phép nhân số không dấu: – Giải thuật nhân số n bit a) Đặt bộ đếm tới n b) Xoá thanh ghi 2n bit chứa tích thành phần; Nhớ ← 0 c) Kiểm tra bit LSB của số nhân; nếu là 1 thì cộng số bị nhân vào n bit nhiều ý nghĩa nhất của tích thành phần d) Dịch phải Nhớ, Tích thành phần, Số nhân đi 1 bit e) Giảm bộ đếm đi 1. Lặp lại các bước từ c cho đến khi bộ đếm bằng không. Đọc kết quả từ thanh ghi tích thành phần  Ví dụ: 10 x 13 – Số bị nhân: 10(10) = 1010 (2) – Số nhân: 13(10) = 1101(2) 45Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Giải thuật nhân số không dấu 46 Start C:=0; A:=0; Bé ®Õm:=n M chøa sè bÞ nh©n Q chøa sè nh©n Q0 = 1? C,A:=A+M DÞch ph¶i C, A, Q Dec(Bé ®Õm) Bé ®Õm = 0? End §óng Sai §óngSai TÝch chøa trong A,Q Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Sơ đồ mạch nhân 47 Mn-1 . . . M0 An-1 . . . A0 Qn-1 . . . Q0 Bé céng n bit Logic ®iÒu khiÓn dÞch vµ céng C Sè nh©n Sè bÞ nh©n Céng DÞch ph¶i Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ: 13 x 10 Bước B.đếm Số nhân Nhớ Tích thành phần Vòng lặp Ghi chú (a) và (b) 4 1101 0 0000 0000 Khởi trị,LSB=1 (c) 4 1101 0 1010 0000 1 Cộng 1010 (d) 4 0110 0 0101 0000 1 Dịch phải (e) 3 0110 0 0101 0000 1 Giảm n (c) 3 0110 0 0101 0000 2 LSB=0 (d) 3 0011 0 0010 1000 2 Dịch phải (e) 2 0011 0 0010 1000 2 Giảm n, LSB=1 (c) 2 0011 0 1100 1000 3 Cộng 1010 (d) 2 0001 0 0110 0100 3 Dịch phải (e) 1 0001 0 0110 0100 3 Giảm n, LSB=1 (c) 1 0001 1 0000 0100 4 Cộng 1010 (d) 1 0000 0 1000 0010 4 Dịch phải (e) 0 0000 0 1000 0010 4 Giảm n. Dừng 48Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn 2.3. Các phép toán trên số nguyên (tt) Phép nhân số có dấu: – Giải pháp 1: • Chuyển đổi thành số dương nếu cần • Thực hiện phép nhân như đối với số không dấu • Kiểm tra bit dấu của 2 số, nếu chúng trái dấu thì tích là số âm. – Giải pháp 2: sử dụng thuật toán Booth kinh điển (có thể áp dụng cho 2 số dương, một số âm và một dương hoặc cả 2 số đều âm). 49Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Giải thuật Booth 50 Start A:=0; Q-1:=0; Bé ®Õm:=n M chøa sè bÞ nh©n Q chøa sè nh©n Q0, Q-1 A := A + M DÞch ph¶i A, Q, Q-1 Dec(Bé ®Õm) Bé ®Õm = 0? End §óngSai A := A - M = 01= 10 = 11 = 00 L−u ý: An-1 ®−îc t¸i t¹o TÝch chøa trong A,Q Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ 1: -7 x 3 = -21 A Q(SN) Q -1 M(SBN) 0000 0011 0 1001 Khởi tạo Count = 4 0111 0011 0 1001 A ← A - M 0011 1001 1 1001 SHR A, Q, Q -1 0001 1100 1 1001 SHR A, Q, Q -1 1010 1100 1 1001 A ← A + M 1101 0110 0 1001 SHR A, Q, Q -1 1110 1011 0 1001 SHR A, Q, Q -1 51 Lần 1, Count = 3 Lần 2, Count = 2 Lần 3, Count = 1 Lần 4, Count = 0 Kết quả: 1110 1011 (dạng bù 2 của 21) Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ 2: -5 x -6 = +30 A Q(SN) Q -1 M(SBN) 0000 1010 0 1011 Khởi tạo Count = 4 0000 0101 0 1011 SHR A, Q, Q -1 0101 0101 0 1011 A ← A - M 0010 1010 1 1011 SHR A, Q, Q -1 1101 1010 1 1011 A ← A + M 1110 1101 0 1011 SHR A, Q, Q -1 0011 1101 0 1011 A ← A - M 0001 1110 1 1011 SHR A, Q, Q -1 52 Lần 1, Count = 3 Lần 2, Count = 2 Lần 3, Count = 1 Lần 4, Count = 0 Kết quả: 0001 1110 Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ 3: 7 x 3 = 21 A Q(SN) Q -1 M(SBN) 0000 0011 0 0111 Khởi tạo Count = 4 1001 0011 0 0111 A ← A - M 1100 1001 1 0111 SHR A, Q, Q -1 1110 0100 1 0111 SHR A, Q, Q -1 0101 0100 1 0111 A ← A + M 0010 1010 0 0111 SHR A, Q, Q -1 0001 0101 0 0111 SHR A, Q, Q -1 53 Lần 1, Count = 3 Lần 2, Count = 2 Lần 3, Count = 1 Lần 4, Count = 0 Kết quả: 0001 0101 Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn 2.3. Các phép toán trên số nguyên (tt)  Phép chia số nhị phân 1. Nạp số chia vào thanh ghi M và số bị chia vào các thanh ghi A, Q. Số bị chia phải ở dạng 2n bit, vì vậy, ví dụ số 4 bit 0111 trở thành 00000111 và 1001 trở thành 11111001 2. Dịch trái A, Q đi 1 bit 3. Nếu M và A có cùng dấu, thực hiện gán A←A-M, ngược lại gán A ← A+M 4. thao tác trên thành công nếu dấu của A là như nhau trước và sau thao tác a. Nếu thao tác thành công hoặc (A=0 và Q=0) thì đặt Q0 ← 1 b. Nếu thao tác không thành công và (A≠0 hoặc Q ≠ 0) thì đặt Q0 ← 0 và khôi phục giá trị trước đó của A 5. Lặp lại bước 2 đến bước 4 số lần lặp bằng số bit của Q 6. Phần dư là A. Nếu dấu của số chia và số bị chia giống nhau thì thương là Q, ngược lại thương là số bù 2 của Q. 54Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Thuật toán chia số nhị phân 55 Start Bé ®Õm := n M chøa sè chia (n bit) A,Q chøa sè bÞ chia (2n bit) Dec(Bé ®Õm) Bé ®Õm = 0? End §óngSai DÞch tr¸i A,Q ®i 1 bit B := A M, A cïng dÊu? A := A - M A := A + M A, B cïng dÊu hoÆc A = Q = 0? Q0 = 1 Q0 = 0; A := B §óng §óng Sai Sai Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ 1: 12 : 4 = 3, dư 0 A Q M = 0100 (sè chia) 0000 1100 Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia cïng dÊu) 0001 1000 DÞch tr¸i 1 bit A, Q 1101 M cïng dÊu A → A := A - M 0001 1000 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A 0011 0000 DÞch tr¸i 1 bit A, Q 1110 M cïng dÊu A → A := A - M 0011 0000 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A 0110 0000 DÞch tr¸i 1 bit A, Q 0010 M cïng dÊu A → A := A - M 0010 0001 A cïng dÊu sau khi trõ → Q0 = 1 0100 0010 DÞch tr¸i 1 bit A, Q 0000 M cïng dÊu A → A := A – M 0000 0011 A cïng dÊu sau khi trõ → Q0 = 1. A chøa d, Q chøa th¬ng 56Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ 2: 13 : (-4) = -3, dư 1 A Q M = 1100 (sè chia) 0000 1101 Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia kh¸c dÊu) 0001 1010 DÞch tr¸i 1 bit A, Q 1101 M kh¸c dÊu A → A := A + M 0001 1010 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A 0011 0100 DÞch tr¸i 1 bit A, Q 1111 M kh¸c dÊu A → A := A + M 0011 0100 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A 0110 1000 DÞch tr¸i 1 bit A, Q 0010 M kh¸c dÊu A → A := A + M 0010 1001 A cïng dÊu sau khi céng → Q0 = 1 0101 0010 DÞch tr¸i 1 bit A, Q 0001 M kh¸c dÊu A → A := A + M 0001 0011 A cïng dÊu sau khi céng → Q0=1. A chøa d, Q chøa bï 2 cña th¬ng 57Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ 3: (-11) : 3 = (-3), dư (-2) A Q M = 0011 (sè chia) 1111 0101 Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia kh¸c dÊu) 1110 1010 DÞch tr¸i 1 bit A, Q 0001 M kh¸c dÊu A → A := A + M 1110 1010 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A 1101 0100 DÞch tr¸i 1 bit A, Q 0000 M kh¸c dÊu A → A := A + M 1101 0100 A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A 1010 1000 DÞch tr¸i 1 bit A, Q 1101 M kh¸c dÊu A → A := A + M 1101 1001 A cïng dÊu sau khi céng → Q0 = 1 1011 0010 DÞch tr¸i 1 bit A, Q 1110 M kh¸c dÊu A → A := A + M 1110 0011 A cïng dÊu sau khi céng → Q0=1. A chøa d, Q chøa bï 2 cña th¬ng 58Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn Ví dụ 4: (-14) : (-6) = 2, dư (-2) A Q M = 1010 (sè chia) 1111 0010 Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia cïng dÊu) 1110 0100 DÞch tr¸i 1 bit A, Q 0100 M cïng dÊu A → A := A - M 1110 0100 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A 1100 1000 DÞch tr¸i 1 bit A, Q 0000 M cïng dÊu A → A := A - M 1100 1000 A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A 1001 0000 DÞch tr¸i 1 bit A, Q 1111 M cïng dÊu A → A := A + M 1111 0001 A cïng dÊu sau khi céng → Q0 = 1 1110 0010 DÞch tr¸i 1 bit A, Q 0100 M cïng dÊu A → A := A - M 1110 0010 A kh¸c dÊu sau khi céng → Q0= 0. A chøa d, Q chøa cña th¬ng 59Chương 2 - Biểu diễn thông tin trong máy tính bangtqh@utc2.edu.vn 2.4. Số dấu phẩy động Số dấu phẩy động (floating point) dùng để tính toán trên số thực – Một số thực X được biểu diễn theo kiểu dấu phẩy động như sau:  = ±  ∗ ± – Với: • m là phần định trị (mantissa) • B là cơ số (base) • e là phần mũ (exponent) – Mantissa quyết định độ chính xác – Exponent quyết định độ lớn/nhỏ của số Chương 2 - Biểu diễn thông tin trong máy tính 60 bangtqh@utc2.edu.vn 2.4. Số dấu phẩy động (tt) Một số có nhiều dạng biểu diễn – Khó xử lý – Cần có sự chuẩn hóa Chương 2 - Biểu diễn thông tin trong máy tính 61 bangtqh@utc2.edu.vn Chuẩn IEEE 754/85 Số dấu phẩy động chính xác đơn (single precision) – Sử dụng 32 bit, độ lệch mũ (bias) = 1
Tài liệu liên quan