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

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 C

out=0 Æ nhận được kết quả đúng.

„ Nếu C

out=1 Æ nhận được kết quả sai,

do tràn nhớ ra ngoài (Carry Out).

„ Tràn nhớ ra ngoài khi: tổng > (2n – 1)

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 C

out

„ 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)]

pdf26 trang | Chia sẻ: trungkhoi17 | Lượt xem: 648 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Kiến trúc máy tính - Chương 3: Số học máy tính - Nguyễn kim Khánh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
đổi 0.81(10) „ 0.81 x 2 = 1.62 phần nguyên = 1 „ 0.62 x 2 = 1.24 phần nguyên = 1 „ 0.24 x 2 = 0.48 phần nguyên = 0 „ 0.48 x 2 = 0.96 phần nguyên = 0 „ 0.96 x 2 = 1.92 phần nguyên = 1 „ 0.92 x 2 = 1.84 phần nguyên = 1 „ 0.84 x 2 = 1.68 phần nguyên = 1 „ 0.81(10) ≈ 0.1100111(2) 18 March 2007 Bài giảng Kiến trúc Máy tính 16 NKK-HUT Chuyển đổi số lẻ thập phân sang nhị phân (tiếp) „ Ví dụ 3: chuyển đổi 0.2(10) „ 0.2 x 2 = 0.4 phần nguyên = 0 „ 0.4 x 2 = 0.8 phần nguyên = 0 „ 0.8 x 2 = 1.6 phần nguyên = 1 „ 0.6 x 2 = 1.2 phần nguyên = 1 „ 0.2 x 2 = 0.4 phần nguyên = 0 „ 0.4 x 2 = 0.8 phần nguyên = 0 „ 0.8 x 2 = 1.6 phần nguyên = 1 „ 0.6 x 2 = 1.2 phần nguyên = 1 „ 0.2(10) ≈ 0.00110011 (2) Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 5 18 March 2007 Bài giảng Kiến trúc Máy tính 17 NKK-HUT 3. Hệ mười sáu (Hexa) „ Cơ số 16 „ 16 chữ số: 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,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 18 March 2007 Bài giảng Kiến trúc Máy tính 18 NKK-HUT Quan hệ giữa số nhị phân và số Hexa F1111 E1110 D1101 C1100 B1011 A1010 91001 81000 70111 60110 50101 40100 30011 20010 10001 00000 Chữ số Hexa4-bit Ví dụ chuyển đổi số nhị phân Æ số Hexa: „ 1011 00112 = B316 „ 0000 00002 = 0016 „ 0010 1101 1001 10102 = 2D9A16 „ 1111 1111 1111 11112 = FFFF16 18 March 2007 Bài giảng Kiến trúc Máy tính 19 NKK-HUT 3.2. Mã hóa và lưu trữ dữ liệu trong máy tính „ Mọi dữ liệu đưa vào máy tính đều phải được mã hóa thành số nhị phân „ Các loại dữ liệu „ Dữ liệu nhân tạo: do con người qui ước „ Dữ liệu tự nhiên: tồn tại khách quan với con người 1. Nguyên tắc chung về mã hóa dữ liệu 18 March 2007 Bài giảng Kiến trúc Máy tính 20 NKK-HUT Mã hoá dữ liệu nhân tạo „ Mã hóa theo các chuẩn qui ước „ Dữ liệu số: „ Số nguyên: mã hóa theo một số chuẩn „ Số thực: mã hóa bằng số dấu phẩy động „ Dữ liệu ký tự: mã hóa theo bộ mã ký tự Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 6 18 March 2007 Bài giảng Kiến trúc Máy tính 21 NKK-HUT Mã hóa và tái tạo tín hiệu vật lý 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 22 NKK-HUT Độ 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 18 March 2007 Bài giảng Kiến trúc Máy tính 23 NKK-HUT 2. Thứ tự lưu trữ các byte trong bộ nhớ chính „ Bộ nhớ chính thường tổ chức theo byte „ 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 24 NKK-HUT Ví dụ lưu trữ dữ liệu 32-bit 0001 1010 0010 1011 0011 1100 0100 1101 Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 7 18 March 2007 Bài giảng Kiến trúc Máy tính 25 NKK-HUT Lưu trữ của các bộ xử lý điển hình „ Intel 80x86 và các Pentium: little-endian „ Motorola 680x0, SunSPARC: big-endian „ Power PC, Itanium: bi-endian 18 March 2007 Bài giảng Kiến trúc Máy tính 26 NKK-HUT 3.3. Biểu diễn số nguyên „ Số nguyên không dấu (Unsigned Integer) „ Số nguyên có dấu (Signed Integer) 18 March 2007 Bài giảng Kiến trúc Máy tính 27 NKK-HUT 1. Biểu diễn số nguyên không dấu Giá trị của A được tính như sau: i n i iaA 2 1 0 ∑− = = „ Nguyên tắc tổng quát: Dùng n bit biểu diễn số nguyên không dấu A: 01221 aaa...aa nn −− Dải biểu diễn của A: từ 0 đến 2n – 1 18 March 2007 Bài giảng Kiến trúc Máy tính 28 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 Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 8 18 March 2007 Bài giảng Kiến trúc Máy tính 29 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: „ M = 0001 0010 = 24 + 21 = 16 +2 = 18 „ 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 30 NKK-HUT Với n = 8 bit 0000 0000 = 0 0000 0001 = 1 0000 0010 = 2 0000 0011 = 3 ... 1111 1111 = 255 Biểu diễn được các giá trị từ 0 đến 255 Chú ý: 1111 1111 + 0000 0001 1 0000 0000 Vậy: 255 + 1 = 0 ? Æ do tràn nhớ ra ngoài 18 March 2007 Bài giảng Kiến trúc Máy tính 31 NKK-HUT Trục số học với n = 8 bit Trục số học: Trục số học máy tính: 18 March 2007 Bài giảng Kiến trúc Máy tính 32 NKK-HUT Với n = 16 bit, 32 bit, 64 bit „ 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 „ 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 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 9 18 March 2007 Bài giảng Kiến trúc Máy tính 33 NKK-HUT 2. Biểu diễn số nguyên có dấu a. 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ó: „ Số bù chín của A = (10n-1) – A „ Số bù mười của A = 10n – A „ Số bù mười của A = (Số bù chín của A) +1 18 March 2007 Bài giảng Kiến trúc Máy tính 34 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: 10000 (104) - 3265 (A) 6735 18 March 2007 Bài giảng Kiến trúc Máy tính 35 NKK-HUT b. 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ó: „ Số bù một của A = (2n-1) – A „ Số bù hai của A = 2n – A „ Số bù hai của A = (Số bù một của A) +1 18 March 2007 Bài giảng Kiến trúc Máy tính 36 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 Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 10 18 March 2007 Bài giảng Kiến trúc Máy tính 37 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 18 March 2007 Bài giảng Kiến trúc Máy tính 38 NKK-HUT c. Biểu diễn số nguyên có dấu bằng mã bù hai „ 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 01221 aaa...aa nn −− Nguyên tắc tổng quát: Dùng n bit biểu diễn số nguyên có dấu A: 18 March 2007 Bài giảng Kiến trúc Máy tính 39 NKK-HUT Biểu diễn số dương 0122n aaa...a0 − i n i iaA 2 2 0 ∑− = = „ Giá trị của số dương A: „ Dạng tổng quát của số dương A: „ Dải biểu diễn cho số dương: 0 đến 2n-1-1 18 March 2007 Bài giảng Kiến trúc Máy tính 40 NKK-HUT Biểu diễn số âm 0122n aaa...a1 − „ Dạng tổng quát của số âm A: i n i i n aA 22 2 0 1 ∑− = − +−= „ Giá trị của số âm A: „ 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 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 11 18 March 2007 Bài giảng Kiến trúc Máy tính 41 NKK-HUT Biểu diễn tổng quát cho số nguyên có dấu 01221 aaa...aa nn −− „ Dạng tổng quát của số nguyên A: i n i i n n aaA 22 2 0 1 1 ∑− = − − +−= „ Giá trị của A được xác định như sau: „ Dải biểu diễn: từ -(2n-1) đến +(2n-1-1) 18 March 2007 Bài giảng Kiến trúc Máy tính 42 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 18 March 2007 Bài giảng Kiến trúc Máy tính 43 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 18 March 2007 Bài giảng Kiến trúc Máy tính 44 NKK-HUT Với n = 8 bit 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 được các giá trị từ -128 đến +127 Chú ý: +127 + 1 = -128 -128 - 1 = +127 Æ do tràn xảy ra Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 12 18 March 2007 Bài giảng Kiến trúc Máy tính 45 NKK-HUT Trục số học số nguyên có dấu với n = 8 bit „ Trục số học: „ Trục số học máy tính: 18 March 2007 Bài giảng Kiến trúc Máy tính 46 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 „ 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 47 NKK-HUT Chuyển đổi từ byte thành word „ Đố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 18 March 2007 Bài giảng Kiến trúc Máy tính 48 NKK-HUT 3. Biểu diễn số nguyên theo mã BCD „ Binary Coded Decimal Code „ Dùng 4 bit để mã hóa cho các chữ số thập phân từ 0 đến 9: 0 Æ 0000 5 Æ 0101 1Æ 0001 6 Æ 0110 2 Æ 0010 7 Æ 0111 3 Æ 0011 8 Æ 1000 4 Æ 0100 9 Æ 1001 „ còn 6 tổ hợp không sử dụng: 1010, 1011, 1100, 1101, 1110, 1111 Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 13 18 March 2007 Bài giảng Kiến trúc Máy tính 49 NKK-HUT Ví dụ số BCD „ 35 Æ 0011 0101BCD „ 61 Æ 0110 0001BCD „ 1087 Æ 0001 0000 1000 0111BCD „ 9640 Æ 1001 0110 0100 0000BCD 18 March 2007 Bài giảng Kiến trúc Máy tính 50 NKK-HUT 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 byte. „ Ví dụ: Số 35 được lưu trữ như sau: „ 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 51 NKK-HUT Phép cộng số BCD „ 35 Æ 0011 0101BCD + 61 Æ + 0110 0001BCD 96 Å 1001 0110BCD kết quả đúng (không phải hiệu chỉnh) „ 87 Æ 1000 0111BCD + 96 Æ + 1001 0110BCD 183 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 52 NKK-HUT 3.4. Thực hiện các phép toán số học với số nguyên 1. Phép cộng số nguyên không dấu Bộ cộng n-bit Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 14 18 March 2007 Bài giảng Kiến trúc Máy tính 53 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). „ Tràn nhớ ra ngoài khi: tổng > (2n – 1) 18 March 2007 Bài giảng Kiến trúc Máy tính 54 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 18 March 2007 Bài giảng Kiến trúc Máy tính 55 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 trong máy tính thực chất là lấy bù hai 18 March 2007 Bài giảng Kiến trúc Máy tính 56 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)] Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 15 18 March 2007 Bài giảng Kiến trúc Máy tính 57 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 18 March 2007 Bài giảng Kiến trúc Máy tính 58 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] 18 March 2007 Bài giảng Kiến trúc Máy tính 59 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 18 March 2007 Bài giảng Kiến trúc Máy tính 60 NKK-HUT 5. 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) Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 16 18 March 2007 Bài giảng Kiến trúc Máy tính 61 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). 18 March 2007 Bài giảng Kiến trúc Máy tính 62 NKK-HUT Bộ nhân số nguyên không dấu 18 March 2007 Bài giảng Kiến trúc Máy tính 63 NKK-HUT Lưu đồ nhân số nguyên không dấu 18 March 2007 Bài giảng Kiến trúc Máy tính 64 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 Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 17 18 March 2007 Bài giảng Kiến trúc Máy tính 65 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 Booth 18 March 2007 Bài giảng Kiến trúc Máy tính 66 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. 18 March 2007 Bài giảng Kiến trúc Máy tính 67 NKK-HUT Thuật giải Booth B¾t ®Çu A := 0, Q-1 := 0 M := Sè bÞ nh©n Q := Sè nh©n Bé ®Õm := n Bé ®Õm = 0 ? KÕt thóc =01=10 Q0,Q-1 = ? A := A + M DÞch ph¶i sè häc A,Q,Q-1 Bé ®Õm:=Bé ®Õm-1 Yes No A := A - M =00 =11 18 March 2007 Bài giảng Kiến trúc Máy tính 68 NKK-HUT 7. 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 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 18 18 March 2007 Bài giảng Kiến trúc Máy tính 69 NKK-HUT Bộ chia số nguyên không dấu 18 March 2007 Bài giảng Kiến trúc Máy tính 70 NKK-HUT 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 71 NKK-HUT 8. 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) đảo dấuđảo dấudươngâm giữ nguyêngiữ nguyêndươngdương đảo dấugiữ nguyênâmâm giữ nguyênđảo dấuâmdương Số dưThươngSố chiaSố bị chia 18 March 2007 Bài giảng Kiến trúc Máy tính 72 NKK-HUT 3.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). Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 19 18 March 2007 Bài giảng Kiến trúc Máy tính 73 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 18 March 2007 Bài giảng Kiến trúc Máy tính 74 NKK-HUT Các dạng biểu diễn chính 18 March 2007 Bài giảng Kiến trúc Máy tính 75 NKK-HUT 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 18 March 2007 Bài giảng Kiến trúc Máy tính 76 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 X = -1.10101100 * 23 = -1101.011 = -13.375 „ 0011 1111 1000 0000 0000 0000 0000 0000 = ? = +1.0 Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 20 18 March 2007 Bài giảng Kiến trúc Máy tính 77 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: „ X = 83.75(10) = 1010011.11(2) = 1.01001111 x 26 „ 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 18 March 2007 Bài giảng Kiến trúc Máy tính 78 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 18 March 2007 Bài giảng Kiến trúc Máy tính 79 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 18 March 2007 Bài giảng Kiến trúc Máy tính 80 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) Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 21 18 March 2007 Bài giảng Kiến trúc Máy tính 81 NKK-HUT Dải giá trị biểu diễn „ 2-127 đến 2+127 „ 10-38 đến 10+38 18 March 2007 Bài giảng Kiến trúc Máy tính 82 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: X = (-1)S*1.m * 2e-1023 „ Dải giá trị biểu diễn: 10-308 đến 10+308 18 March 2007 Bài giảng Kiến trúc Máy tính 83 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: X = (-1)S*1.m * 2e-16383 „ Dải giá trị biểu diễn: 10-4932 đến 10+4932 18 March 2007 Bài giảng Kiến trúc Máy tính 84 NKK-HUT 3.Thực hiện phép toán số dấu phẩy động „ X1 = M1 * RE1 „ X2 = M2 * RE2 „ Ta có „ X1 * X2 = (M1* M2) * RE1+E2 „ X1 / X2 = (M1 / M2) * RE1-E2 „ X1 ± X2 = (M1*RE1-E2 ± M2) * RE2 , với E2 ≥ E1 Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 22 18 March 2007 Bài giảng Kiến trúc Máy tính 85 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ị. 18 March 2007 Bài giảng Kiến trúc Máy tính 86 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ả 18 March 2007 Bài giảng Kiến trúc Máy tính 87 NKK-HUT Thuật toán cộng/trừ số dấu phẩy động 18 March 2007 Bài giảng Kiến trúc Máy tính 88 NKK-HUT Thuật toán nhân số dấu phẩy động Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 23 18 March 2007 Bài giảng Kiến trúc Máy tính 89 NKK-HUT Thuật toán chia số dấu phẩy động 18 March 2007 Bài giảng Kiến trúc Máy tính 90 NKK-HUT 3.6. Biểu diễn ký tự „ Bộ mã ASCII (American Standard Code for Information Interchange) „ Bộ mã Unicode 18 March 2007 Bài giảng Kiến trúc Máy tính 91 NKK-HUT 1. Bộ mã ASCII „ Do ANSI (American National Standard Institute) thiết kế „ Bộ mã 8-bit Æ có thể mã hóa được 28 ký tự, có mã từ: 0016 ÷ FF16 , trong đó: „ 128 ký tự chuẩn có mã từ 0016 ÷ 7F16 „ 128 ký tự mở rộng có mã từ 8016 ÷ FF16 18 March 2007 Bài giảng Kiến trúc Máy tính 92 NKK-HUT Các ký tự chuẩn „ Các ký tự hiển thị chuẩn: „ Các chữ cái Latin „ Các chữ số thập phân „ các dấu câu: . , : ; ... „ các dấu phép toán: + - * / % ... „ một số ký hiệu thông dụng: &, $,@, # „ dấu cách „ Các mã điều khiển „ Các mã điều khiển định dạng văn bản „ Các mã điều khiển truyền số liệu „ Các mã điều khiển phân tách thông tin „ Các mã điều khiển khác Bài giảng Kiến trúc máy tính 18 March 2007 Nguyễn Kim Khánh - ĐHBKHN 24 18 March 2007 Bài giảng Kiến trúc Máy tính 93 NKK-HUT 127 o 111 - 95 O 79 ? 63 / 47 31 15F ~ 126 n 110 ^ 94 N 78 > 62 . 46 30 14E } 125 m 109 ] 93 M 77 = 61 - 45 29 13D | 124 l 108 \ 92 L 76 < 60 , 44 28 12C { 123 k 107 [ 91 K 75 ; 59 + 43 27 11B z 122 j 106 Z 90 J 74 : 58 * 42 26 10A y 121 i 105 Y 89 I 73 9 57 ) 41 25 99 x 120 h 104 X 88 H 72 8 56 ( 40 24 88 w 119 g 103 W 87 G 71 7 55 ' 39 23 77 v 118 f 102 V 86 F 70 6 54 & 38 22 66 u 117 e 101 U 85 E 69 5 53 % 37 21 55 t 116 d 100 T 84 D 68 4 52 $ 36 20 44 s 115 c 99 S 83 C 67 3 51 # 35 19 33 r 114 b 98 R 82 B 66 2 50 " 34 18 22 q 113 a 97 Q 81 A 65 1 49 ! 33 17 11 p 112 ` 96 P 80 @ 64 0 48 32 16 00 76543210HEXA 18 March 2007 Bài giảng Kiến trúc Máy tính 94 NKK-HUT Các ký tự hiển thị chuẩn „ 26 chữ cái hoa ‘A’ đến ‘ Z’ có mã từ 41(16) đến 5A(16) (65 đến 90): „ 'A' Æ 0100 0001 = 41(16) „ 'B' Æ 0100 0010 = 42(16) „ 'C' Æ 0100 0011 = 43(16) „ . . . „ 'Z' Æ 0101 1010 = 5A(16) „ 26 chữ cái thường ‘a’ đến ‘z’ có mã từ 61(16) đến 7A(16) (97 đến 122): „ 'a' Æ 0110 0001 = 61(16) „ 'b' Æ 0110 0010 = 62(16) „ 'c' Æ 0110 0011 = 63(16) „ . . . „ 'z' Æ 0111 1010 = 7A(16) 18 March 2007 Bài giảng Kiến trúc Máy tính 95 NKK-HUT Các ký tự hiển thị chuẩn (tiếp) „ 10 chữ số thập phân từ ‘0’ đến ‘9’ có mã từ 30(16) đến 39(16) (48 đến 57): „ '0' Æ 0011 0000 = 30(16) „ '1' Æ 0011 0001 = 31(16) „ ‘2' Æ 0011 0010 = 32(16) „ . . . „ '9' Æ 0011 1001 = 39(16) 18 March 2007 Bài giảng Kiến trúc Máy tính 96 NKK-HUT Các ký tự hiển thị chuẩn (tiếp) „ Các ký hiệu khác: „ các dấu câu: . , : ; ... „ các dấu phép toán: + - * / % ... „ một số ký hiệu thông dụng: &, $,@, # „ dấu c

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_kien_truc_may_tinh_chuong_3_so_hoc_may_tinh_nguyen.pdf
Tài liệu liên quan