Cấu trúc máy tính chương 2 biểu diễn dữ liệu và số học máy tính

105 785 1
Cấu trúc máy tính   chương 2  biểu diễn dữ liệu và số học máy tính

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

... a0 20 a1 a2 2 am m A n i a i i m 68 Vớ d S nh phõn 1101001.1011 cú giỏ tr c xỏc nh nh sau: 1101001.1011 (2) = 26 + 25 + 23 + 20 + 2- 1 + 2- 3 + 2- 4 = 64 + 32 + + + 0.5 + 0. 125 + 0.0 625 ... 1111 = +1 +2 Trc s hc mỏy tớnh: -1 +1 -2 +2 + 127 - 128 - 127 -2 -1 - 128 + 127 Trc s hc: - 128 -2 -1 127 101 Vi n = bit (tip) Kiu d liu tng ng Turbo C l kiu char Vớ d: char a; a = 127 ; a = a +... khụng du sau õy bng bit: A = 45 B = 156 Gii: A = 45 = 32 + + + = 25 + 23 + 22 + 20 A = 0010 1101 B = 156 = 128 + 16 + + = 27 + 24 + 23 + 22 B = 1001 1100 87 Cỏc vớ d (tip) Vớ d Cho cỏc s nguyờn

Cấu trúc máy tính Chƣơng 2 BIỂU DIỄN DỮ LIỆU & SỐ HỌC MÁY TÍNH 62 Nội dung chƣơng 2 2.1. Các hệ đếm cơ bản 2.2. Mã hóa và lƣu trữ dữ liệu trong máy tính 2.3. Biểu diễn số nguyên 2.4. Các phép toán số học với số nguyên 2.5. Biểu diễn số thực 2.6. Biểu diễn kí tự 63 Các hệ đếm cơ bản  Về mặt toán học, ta có thể biểu diễn số theo hệ đếm cơ số bất kì.  Khi nghiên cứu về máy tính, ta chỉ quan tâm đến các hệ đếm sau đây:    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ệ mƣời sáu (Hexadecimal System) → dùng để viết gọn cho số nhị phân 64 Hệ thập phân  Sử dụng 10 chữ số: 0,1,2,3,4,5,6,7,8,9 để biểu diễn số  Dùng n chữ số thập phân có thể biểu diễn đƣợc 10n giá trị khác nhau:  00...000 = 0  ....  99...999 = 10n-1  Giả sử một số A đƣợc biểu diễn dƣới dạng: A = an an-1 … a1 a0 . a-1 a-2 … a-m   Giá trị của A đƣợc hiểu nhƣ sau:  A  an10 n  an 110 n 1  ...  a1101  a0100  a110 1  ...  am10  m A n i a 10  i i  m 65 Ví dụ  Số thập phân 472.38 có giá trị đƣợc hiểu nhƣ sau: 472.38 = 4 x 102 + 7 x 101 + 2 x 100 + 3 x 10-1 + 8 x 10-2 66 Mở rộng cho hệ cơ số r (r>1)  Sử dụng r chữ số có giá trị riêng từ 0 đến r-1 để biểu diễn số  Giả sử có số A đƣợc biểu diễn bằng các chữ số của hệ đếm theo cơ số r nhƣ sau:  A = an an-1 … a1 a0 . a-1 a-2 … a-m  Giá trị của A là: A  an r n  an 1r n 1  ...  a1r 1  a0 r 0  a1r 1  a2 r 2  ...  am r  m A n i a r  i i  m  Một chuỗi n chữ số của hệ đếm cơ số r sẽ biểu diễn đƣợc rn giá trị khác nhau. 67 Hệ nhị phân     Sử 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 bit có thể biểu diễn đƣợc 2n giá trị khác nhau:    00...000 = 0 ... 11...111 = 2n-1  Giả sử có số A đƣợc biểu diễn theo hệ nhị phân nhƣ sau: A = an an-1 … a1 a0 . a-1 a-2 … a-m  Với ai là các chữ số nhị phân, khi đó giá trị của A là: A  an 2 n  an 1 2 n 1  ...  a1 21  a0 20  a1 2 1  a2 2 2  ...  am 2  m A n i a 2  i i  m 68 Ví dụ  Số nhị phân 1101001.1011 có giá trị đƣợc xác định nhƣ sau: 1101001.1011(2) = 26 + 25 + 23 + 20 + 2-1 + 2-3 + 2-4 = 64 + 32 + 8 + 1 + 0.5 + 0.125 + 0.0625 = 105.6875(10) 69 Đổi số thập phân sang nhị phân  Thực hiện chuyển đổi phần nguyên và phần lẻ riêng.  Chuyển đổi phần nguyên:  Cách 1: chia dần số đó cho 2, xác định các phần dƣ, rồi viết các số dƣ theo chiều ngƣợc lại.  Ví dụ: chuyển đổi 105(10) sang hệ nhị phân ta làm nhƣ sau: 105 : 2 = 52 dƣ 1 52 : 2 = 26 dƣ 0 26 : 2 = 13 dƣ 0 13 : 2 = 6 dƣ 1 6:2 = 3 dƣ 0 3:2 = 1 dƣ 1 1:2 = 0 dƣ 1 Nhƣ vậy, ta có: 105(10) = 1101001(2) 70 Đổi số thập phân sang nhị phân  Chuyển đổi phần nguyên (tiếp):  Cách 2: phân tích số đó thành tổng các lũy thừa của 2, sau đó dựa vào các số mũ để xác định dạng biểu diễn nhị phân.  Ví dụ: 105 = 64 + 32 + 8 + 1 = 26 + 25 + 23 + 20  105(10) = 1101001(2)  Chuyển đổi phần lẻ:  Nhân phần lẻ với 2 rồi lấy phần nguyên ... Sau đó viết các phần nguyên theo chiều thuận.  Ví dụ: chuyển đổi số 0.6875(10) sang hệ nhị phân: 0.6875 x 2 = 1.3750 phần nguyên 0.375 x2 = 0.750 phần nguyên 0.75 x2 = 1.50 phần nguyên 0.5 x2 = 1.0 phần nguyên Kết quả là: 0.6875(10) = 0.1011(2) = = = = 1 0 1 1 71 3. Hệ mƣời sáu (Hexa)  Sử dụng 16 chữ số, kí hiệu nhƣ sau: 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. 72 Một số ví dụ  Nhị phân  Hexa:  Hexa  Nhị phân:  Thập phân  Hexa: 11 1011 1110 0110(2) = 3BE6(16) 3E8(16) = 11 1110 1000(2) 14988  ? 14988 : 16 = 936 dƣ 936 : 16 = 58 dƣ 58 : 16 = 3 dƣ 3 : 16 = 0 dƣ Nhƣ vậy, ta có: 14988(10) = 3A8C(16)  Hexa  Thập phân: 12 tức là C 8 10 tức là A 3 3A8C  ? 3A8C (16) = 3 x 163 + 10 x 162 + 8 x 161 +12 x 160 = 12288 + 2560 + 128 + 12 = 14988(10) 73 Cộng trừ số Hexa 8A9B + 37CD C268 B46E 1AC9 99A5 B7E5 + 2AF9 E2DE FA9D 2BC5 CED8 B800 + 0FFF 8E9A 3FE2 1234 + ABCD 4B6D 3FEA CFFF + 1FFF A78D 45FB 879D + 5DF8 98BA 8A9D 74 Nội dung chƣơng 2 2.1. Các hệ đếm cơ bản 2.2. Mã hóa và lƣu trữ dữ liệu trong máy tính 2.3. Biểu diễn số nguyên 2.4. Các phép toán số học với số nguyên 2.5. Biểu diễn số thực 2.6. Biểu diễn kí tự 75 Mã hóa và lƣu trữ dữ liệu 1. Nguyên tắc chung về mã hóa dữ liệu 2. Lƣu trữ thông tin trong bộ nhớ chính 76 1. Nguyên tắc chung về mã hóa dữ liệu  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 quy ƣớc Dữ liệu tự nhiên: tồn tại khách quan với con ngƣời 77 Nguyên tắc mã hóa dữ liệu  Mã hóa dữ liệu nhân tạo:    Dữ liệu số nguyên: mã hóa theo chuẩn qui ƣớc Dữ liệu số thực: mã hóa bằng số dấu chấm động Dữ liệu ký tự: mã hóa theo bộ mã ký tự 78 Nguyên tắc mã hóa dữ liệu (tiếp)  Mã hóa dữ liệu tự nhiên:    Phổ biến là các tín hiệu vật lý nhƣ âm thanh, hình ảnh, ... Các dữ liệu tự nhiên cần phải đƣợc số hóa (digitalized) trƣớc khi đƣa vào trong máy tính. Sơ đồ mã hóa và tái tạo tín hiệu vật lý: TÝn hiÖu vËt lý Bé c¶m biÕn tÝn hiÖu (sensor) TÝn hiÖu ®iÖn Bé chuyÓn ®æi liªn tôc t-¬ng tù - sè (ADC) TÝn hiÖu sè M¸y tÝnh TÝn hiÖu vËt lý Bé t¸i t¹o tÝn hiÖu TÝn hiÖu ®iÖn Bé chuyÓn ®æi liªn tôc sè - t-¬ng tù (DAC) TÝn hiÖu sè 79 Độ 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 Trong thực tế, độ dài từ dữ liệu thƣờng là bội số của 8 bit, ví dụ: 8, 16, 32, 64 bit 80 2. Lƣu trữ thông tin trong bộ nhớ chính  Bộ nhớ chính thƣờng đƣợc tổ chức theo Byte  Độ dài từ dữ liệu có thể chiếm 1 hoặc nhiều Byte  Cần phải biết thứ tự lƣu trữ các byte trong bộ nhớ chính:   Lƣu trữ kiểu đầu nhỏ (Little-endian) Lƣu trữ kiểu đầu to (Big-endian)  Little-endian: Byte có ý nghĩa thấp hơn đƣợc lƣu trữ trong bộ nhớ ở vị trí có địa chỉ nhỏ hơn.  Big-endian: Byte có ý nghĩa thấp hơn đƣợc lƣu trữ trong bộ nhớ ở vị trí có địa chỉ lớn hơn. 81 Ví dụ    Intel 80x86, Pentium: Little-endian Motorola 680x0, các bộ xử lý RISC: Big-endian Power PC, Itanium: hỗ trợ cả hai (Bi-endian) 82 Bài tập  Dữ liệu 16 bit có giá trị là 5B9D đƣợc lƣu trữ vào bộ nhớ chính tổ chức theo kiểu Little-endian bắt đầu từ byte nhớ có địa chỉ là 1234. Hãy xác định nội dung các byte nhớ chứa lƣu trữ dữ liệu đó dƣới dạng nhị phân. 83 Nội dung chƣơng 2 2.1. Các hệ đếm cơ bản 2.2. Mã hóa và lƣu trữ dữ liệu trong máy tính 2.3. Biểu diễn số nguyên 2.4. Các phép toán số học với số nguyên 2.5. Biểu diễn số thực 2.6. Biểu diễn kí tự 84 Biểu diễn số nguyên 1. Số nguyên không dấu 2. Số nguyên có dấu 3. Biểu diễn số nguyên theo mã BCD 85 1. Số nguyên không dấu  Dạng tổng quát: giả sử dùng n bit để biểu diễn cho một số nguyên không dấu A: an-1an-2...a3a2a1a0  Giá trị của A đƣợc tính nhƣ sau: A  an 1 2 n 1  an 2 2 n 2  ...  a1 21  a0 20 n 1 A   ai 2 i i 0  Dải biểu diễn của A: từ 0 đến 2n-1 86 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 = 45 B = 156 Giải: A = 45 = 32 + 8 + 4 + 1 = 25 + 23 + 22 + 20  A = 0010 1101 B = 156 = 128 + 16 + 8 + 4 = 27 + 24 + 23 + 22  B = 1001 1100 87 Các ví dụ (tiếp)  Ví dụ 2. Cho các số nguyên không dấu X, Y đƣợc biểu diễn bằng 8 bit nhƣ sau: X = 0010 1011 Y = 1001 0110 Giải: X = 0010 1011 = 25 + 23 + 21 + 20 = 32 + 8 + 2 + 1 = 43 Y = 1001 0110 = 27 + 24 + 22 + 21 = 128 + 16 + 4 + 2 = 150 88 Trƣờng hợp cụ thể: với n = 8 bit  Dải biểu diễn là [0, 255] 0000 0000 = 0 0000 0001 0000 0010 0000 0011 ..... 1111 1111 = = = 1 2 3 = 255  Trục số học máy tính: 255 254 0 1 2 3  Trục số học: 0 1 2 255 89 Với n = 8 bit  Kiểu dữ liệu tƣơng ứng trong Turbo C là kiểu unsigned char.  Ví dụ: unsigned char a; a = 255; a = a + 1; printf(“%d”,a); //Kết quả sai là 0 1111 1111 + 0000 0001 1 0000 0000 KQ sai: 255 + 1 = 0 ? (do phép cộng bị nhớ ra ngoài) 90 Với n = 16 bit, 32 bit, 64 bit  n = 16 bit:    Dải biểu diễn là [0, 65535] Kiểu dữ liệu tƣơng ứng trong Turbo C là kiểu unsigned int Ví dụ: unsigned int a; a = 0xffff; a = a + 1; printf(“%d”,a);  n = 32 bit:  Dải biểu diễn là [0, 232-1]  n = 64 bit:  Dải biểu diễn là [0, 264-1] 91 2. Số nguyên có dấu a. Khái niệm về số bù  Số bù chín và số bù mƣời (hệ thập phân):  Giả sử có một số nguyên thập phân A đƣợc biểu diễn bởi n chữ số thập phân. Khi đó ta có:  Số bù chín của A = (10n - 1) - A  Số bù mƣời của A = 10n - A  NX: Số bù mƣời = Số bù chín + 1  Ví dụ:  Xét n = 4 chữ số, A = 2874  Số bù chín của A = (104 - 1) - 2874 = 7125  Số bù mƣời của A = 104 - 2874 = 7126 92 Khái niệm về số bù  Số bù một và số bù hai (hệ nhị phân):  Giả sử có một số nguyên nhị phân A đƣợc biểu diễn bởi n bit. Khi đó ta có:  Số bù một của A = (2n - 1) - A  Số bù hai của A = 2n - A  NX: Số bù hai = Số bù một + 1  Ví dụ:  Xét n = 4 bit, A = 0110  Số bù một của A = (24 - 1) - 0110 = 1001  Số bù hai của A = 24 - 0110 = 1010 93 Nhận xét  Có thể tìm số bù một của A bằng cách đảo tất cả các bit của A  Số bù hai của A = Số bù một của A + 1 94 Nhận xét Ví dụ: cho A Số bù một của A Số bù hai của A Nhận xét Số bù hai của =0110 0101 =1001 1010 + 1 =1001 1011 A = 0110 0101 A += 1001 1011 1 0000 0000 = 0 (bỏ qua bit nhớ ra ngoài) ->Số bù hai của A=-A 95 Biểu diễn số nguyên có dấu b. Biểu diễn số nguyên có dấu bằng số bù hai  Dùng n bit biểu diễn số nguyên có dấu A: an-1an-2...a2a1a0  Với số dƣơng:  Bit an-1 = 0  Các bit còn lại biểu diễn độ lớn của số dƣơng đó   Dạng tổng quát của số dƣơng: 0an-2...a2a1a0 Giá trị của số dƣơng: n2 A   ai 2i i 0  Dải biểu diễn của số dƣơng: [0, 2n-1-1] 96 Biểu diễn số nguyên có dấu (tiếp)  Với số âm:  Đƣợc biểu diễn bằng số bù hai của số dƣơng tƣơng ứng   Bit an-1 = 1   Dạng tổng quát của số âm: 1an-2...a2a1a0 Giá trị của số âm: A  2 n 1 n2   ai 2i i 0  Dải biểu diễn của số âm: [-2n-1, -1]  Dải biểu diễn của số nguyên có dấu n bit là [-2n-1, 2n-1-1] 97 Biểu diễn số nguyên có dấu (tiếp)  Dạng tổng quát của số nguyên có dấu A: an-1an-2...a2a1a0  Giá trị của A đƣợc xác định nhƣ sau: A  an 1 2 n 1 n2   ai 2i i 0  Dải biểu diễn: [-2n-1, 2n-1-1] 98 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 = +50 B = -70 Giải: A = +50 = 32 + 16 + 2 = 25 + 24 + 21  A = 0011 0010 B = -70 Ta có: +70 = 64 + 4 + 2 = 26 + 22 + 21 +70 = 0100 0110 Số bù 1 = 1011 1001 + 1 Số bù 2 = 1011 1010  B = 1011 1010 99 Các ví dụ (tiếp)  Ví dụ 2. Xác định giá trị của các số nguyên có dấu 8 bit sau đây: A = 0101 0110 B = 1101 0010 Giải: A = 26 + 24 + 22 + 21 = 64 + 16 + 4 + 2 = +86 B = -27 + 26 + 24 + 21 = -128 + 64 + 16 + 2 = -46 100 Trƣờng hợp cụ thể: với n = 8 bit  Dải biểu diễn là [-128, +127] 0000 0000 = 0 0000 0001 = 0000 0010 = ….. 0111 1111 = 1000 0000 = 1000 0001 = ..... 1111 1110 = 1111 1111 = +1 +2  Trục số học máy tính: -1 0 +1 -2 +2 +127 -128 -127 -2 -1 -128 +127  Trục số học: -128 -2 -1 0 1 2 127 101 Với n = 8 bit (tiếp)  Kiểu dữ liệu tƣơng ứng trong Turbo C là kiểu char.  Ví dụ: char a; a = 127; a = a + 1; printf(“%d”,a); //Kết quả sai là -128 0111 1111 + 0000 0001 1000 0000 KQ sai: 127 + 1 = -128 ? (do phép cộng bị tràn số học) 102 Với n = 16 bit, 32 bit, 64 bit  n = 16 bit:   Dải biểu diễn là [-32768, +32767] Kiểu dữ liệu tƣơng ứng trong Turbo C là kiểu int  n = 32 bit:   Dải biểu diễn là [-231, 231-1] Kiểu dữ liệu tƣơng ứng trong Turbo C là kiểu long int  n = 64 bit:  Dải biểu diễn là [-263, 263-1] 103 Chuyển từ 8 bit sang 16 bit  Với số dƣơng: +35 = 0010 0011 (8 bit) +35 = 0000 0000 0010 0011 (16 bit)  Thêm 8 bit 0 vào bên trái  Với số âm: -79 = 1011 0001 (8 bit) -79 = 1111 1111 1011 0001 (16 bit)  Thêm 8 bit 1 vào bên trái  Kết luận: mở rộng sang bên trái 8 bit bằng bit dấu 104 3. Biểu diễn số nguyên theo mã BCD  BCD – Binary Coded Decimal (Mã hóa số nguyên thập phân bằng nhị phân)  Dùng 4 bit để mã hóa cho các chữ số thập phân từ 0 đến 9 0  0000 1  0001 2  0010 3  0011 4  0100 5  0101 6  0110 7  0111 8  1000 9  1001  Có 6 tổ hợp không sử dụng: 1010, 1011, 1100, 1101, 1110, 1111 105 Ví dụ về số BCD     35  0011 0101BCD 79  0111 1001BCD 2281  0010 0010 1000 0001BCD 1304  0001 0011 0000 0100BCD 106 Phép cộng số BCD  35  0011 0101BCD + 24  + 0010 0100BCD 59  0101 1001BCD Kết quả đúng (không phải hiệu chỉnh)  89  1000 1001BCD + 52  + 0101 0010BCD 141 1101 1011  kết quả sai + 0110 0110  hiệu chỉnh 0001 0100 0001BCD  kết quả đúng 1 4 1  Hiệu chỉnh: cộng thêm 6 ở những hàng có nhớ 107 Các kiểu lƣu trữ số BCD  BCD dạng nén (Packed BCD): Hai số BCD đƣợc lƣu trữ trong 1 Byte.  Ví dụ số 52 đƣợc lƣu trữ nhƣ sau: 0101 0010  BCD dạng không nén (Unpacked BCD): Mỗi số BCD đƣợc lƣu trữ trong 4 bit thấp của mỗi Byte.  Ví dụ số 52 đƣợc lƣu trữ nhƣ sau: 0101 0010 108 Nội dung chƣơng 2 2.1. Các hệ đếm cơ bản 2.2. Mã hóa và lƣu trữ dữ liệu trong máy tính 2.3. Biểu diễn số nguyên 2.4. Các phép toán số học với số nguyên 2.5. Biểu diễn số thực 2.6. Biểu diễn kí tự 109 Các phép toán số học với số nguyên 1. 2. 3. 4. 5. Bộ cộng Cộng số nguyên không dấu Cộng/trừ số nguyên có dấu Nhân số nguyên Chia số nguyên 110 1. Bộ cộng  Bộ cộng 1 bit toàn phần (Full Adder) 111 Bộ cộng (tiếp)  Bộ cộng n bit 112 2. Cộng số nguyên không dấu  Nguyên tắc: Sử dụng bộ cộng n bit để cộng 2 số nguyên không dấu n bit, kết quả nhận đƣợc cũng là n bit.   Nếu không có nhớ ra khỏi bit cao nhất (Cout=0) thì kết quả nhận đƣợc là đúng. Nếu có nhớ ra khỏi bit cao nhất (Cout=1) thì kết quả nhận đƣợc là sai, khi đó đã xảy ra hiện tƣợng nhớ ra ngoài.  Hiện tƣợng nhớ ra ngoài (Carry-out) xảy ra khi tổng của 2 số nguyên không dấu n bit > 2n-1 113 VD cộng số nguyên không dấu 8 bit  Trƣờng hợp không xảy ra carry-out: X = 1001 0110 = 150 Y = 0001 0011 = 19 S = 1010 1001 = 169 Cout = 0  Trƣờng hợp có xảy ra carry-out: X = 1100 0101 = 197 Y = 0100 0110 = 70 S = 0000 1011  267 Cout = 1  carry-out (KQ sai = 23 + 21 + 20 = 11) unsigned char x, y, s; x = 197; y = 70; s = x + y; printf(“%d”,s); 114 3. Cộng/trừ số nguyên có dấu  Khi cộng hai số nguyên có dấu n bit, ta không quan tâm đến bit Cout và kết quả nhận đƣợc cũng là n bit.   Cộng hai số khác dấu: kết quả luôn đúng Cộng hai số cùng dấu:  Nếu tổng nhận đƣợc cùng dấu với 2 số hạng thì kết quả là đúng  Nếu tổng nhận đƣợc khác dấu với 2 số hạng thì đã xảy ra hiện tƣợng tràn số học (Overflow) và kết quả nhận đƣợc là sai  Tràn số học xảy ra khi tổng thực sự của hai số nằm ngoài dải biểu diễn của số nguyên có dấu n bit: [-2n-1, 2n-1-1] 115 Phép trừ số nguyên có dấu  Nguyên tắc thực hiện phép trừ:   Ta có: X – Y = X + (-Y) Cách thực hiện: lấy X cộng với số bù 2 của Y n-bit Y n-bit X Bï hai Bé céng n-bit n-bit S 116 Ví dụ cộng 2 số nguyên có dấu (không tràn) 117 Ví dụ cộng 2 số nguyên có dấu (Overflow) 118 4. Nhân số nguyên a. Nhân số nguyên không dấu b. Nhân số nguyên có dấu 119 a. 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 = 0 → tích riêng phần = 0 Nếu bit của số nhân = 1 → tích riêng phần = số bị nhân Tích riêng phần tiếp theo đƣợc dịch trái 1 bit so với tích riêng phần trƣớc đó  Tích = tổng các tích riêng phần  Nhân 2 số nguyên n bit, tích có độ dài 2n bit → không tràn 120 Bộ nhân số nguyên không dấu Số bị nhân M Mn-1 ... M1 M0 Điều khiển cộng Bộ cộng n bit Bộ điều khiển dịch và cộng Điều khiển dịch phải C An-1 ... A1 A0 Qn-1 ... Q1 Q0 Số nhân Q 121 Lƣu đồ thực hiện Bắt đầu C, A ¬ 0 M ¬ Số bị nhân Q ¬ Số nhân Bộ đếm ¬ n S Q0 = 1 ? Đ C, A ¬ A  M Dịch phải C, A, Q Bộ đếm ¬ Bộ đếm - 1 S Bộ đếm = 0 ? Đ Kết thúc 122 Ví dụ nhân số nguyên không dấu    M Q  C 0  0 0  0  0 0  1 0 = 1011 (11 - Số bị nhân) = 1101 (13 - Số nhân) = 1000 1111 (143 - Tích) A 0000 + 1011 1011 0101 Q 1101 Các giá trị khởi đầu 1101 1110 A ¬ A + M Dịch phải 0010 + 1011 1101 0110 + 1011 0001 1000 1111 Dịch phải 1111 1111 A ¬ A + M Dịch phải 1111 1111 A ¬ A + M Dịch phải 123 b. Nhân số nguyên có dấu  Sử dụng thuật giải nhân không dấu:    Bƣớc 1: Chuyển đổi số nhân và số bị nhân thành số dƣơng tƣơng ứng. Bƣớc 2: Nhân 2 số bằng thuật giải nhân số nguyên không dấu → đƣợc tích 2 số dƣơng. Bƣớc 3: Hiệu chỉnh dấu của tích:  Nếu 2 thừa số ban đầu cùng dấu thì tích nhận đƣợc ở bƣớc 2 là kết quả cần tính.  Nếu 2 thừa số ban đầu khác dấu nhau thì kết quả là số bù 2 của tích nhận đƣợc ở bƣớc 2. 124 Nhân số nguyên có dấu  Sử dụng thuật giải Booth:  Với số nhân dƣơng:  Ta có: 2i + 2i-1 + … + 2j = 2i+1 - 2j (với ij)  VD: M * 01110010 = M * (27 – 24 + 22 – 21)  Quy tắc: duyệt từ trái sang phải:     Nếu gặp 10 thì trừ A đi M rồi dịch phải Nếu gặp 01 thì cộng A với M rồi dịch phải Nếu gặp 00 hay 11 thì chỉ dịch phải Với số nhân âm:  Ta có: 11…10ak-1ak-2…a0 = -2n-1 + 2n-2 + … + 2k+1 + ak-12k-1 + … + a020 = -2n-1 + 2n-1 - 2k+1 + ak-12k-1 + … + a020  -2k+1 ứng với bit 10 nên vẫn đảm bảo quy tắc ở TH trên 125 Lƣu đồ thực hiện thuật toán Booth A Q Q-1 Bắt đầu A¬0 Q-1 ¬ 0 M ¬ Số bị nhân Q ¬ Số nhân Bộ đếm ¬ n = 10 A¬AM Q0Q-1 = 01 A¬AM = 00 / 11 Dịch phải A, Q, Q-1 (Giữ nguyên bit dấu của A) Bộ đếm ¬ Bộ đếm - 1 S Bộ đếm = 0 ? Đ Kết thúc 126 Ví dụ về thuật toán Booth Ví dụ 1: Ví dụ 2: n = 4 bit, M = +7, Q = +3 M = 0111, Q = 0011, -M = 1001 n = 4 bit, M = +7, Q = -3 M = 0111, Q = 1101, -M = 1001 A 0000 +1001 1001 1100 1110 +0111 10101 0010 0001 Q Q-1 0011 0 ; khởi tạo 0011 1001 0100 ; A ¬ A - M ; dịch phải ; dịch phải 0100 1010 0101 0 1 1 1 0 0 ; A ¬ A + M ; dịch phải ; dịch phải A 0000 +1001 1001 1100 +0111 10011 0001 +1001 1010 1101 1110 Q Q-1 1101 0 ; khởi tạo 1101 1110 0 1 ; A ¬ A - M ; dịch phải 1110 1111 1 0 ; A ¬ A + M ; dịch phải 1111 0111 1011 0 1 1 ; A ¬ A - M ; dịch phải ; dịch phải 127 5. Chia số nguyên a. Chia số nguyên không dấu b. Chia số nguyên có dấu 128 a. Chia số nguyên không dấu  Ví dụ: 129 Bộ chia số nguyên không dấu Số chia M Mn-1 ... M1 M0 Điều khiển cộng/trừ Bộ cộng/trừ n bit Bộ logic điều khiển cộng, trừ và dịch Điều khiển dịch trái An-1 ... A1 A0 Qn-1 ... Q1 Q0 Số bị chia Q 130 Lƣu đồ thực hiện Bắt đầu A¬0 M ¬ Số chia Q ¬ Số bị chia Bộ đếm ¬ 0 Dịch trái A, Q A¬AM S Đ A[...]... khụng du A: an-1an -2 a3a2a1a0 Giỏ tr ca A c tớnh nh sau: A an 1 2 n 1 an 2 2 n 2 a1 21 a0 20 n 1 A ai 2 i i 0 Di biu din ca A: t 0 n 2n-1 86 Cỏc vớ d Vớ d 1 Biu din cỏc s nguyờn khụng du sau õy bng 8 bit: A = 45 B = 156 Gii: A = 45 = 32 + 8 + 4 + 1 = 25 + 23 + 22 + 20 A = 0010 1101 B = 156 = 128 + 16 + 8 + 4 = 27 + 24 + 23 + 22 B = 1001 1100 87 Cỏc vớ d (tip) Vớ d 2 Cho cỏc s nguyờn khụng... 0010 1011 = 25 + 23 + 21 + 20 = 32 + 8 + 2 + 1 = 43 Y = 1001 0110 = 27 + 24 + 22 + 21 = 128 + 16 + 4 + 2 = 150 88 Trng hp c th: vi n = 8 bit Di biu din l [0, 25 5] 0000 0000 = 0 0000 0001 0000 0010 0000 0011 1111 1111 = = = 1 2 3 = 25 5 Trc s hc mỏy tớnh: 25 5 25 4 0 1 2 3 Trc s hc: 0 1 2 255 89 Vi n = 8 bit Kiu d liu tng ng trong Turbo C l kiu unsigned char Vớ d: unsigned char a; a = 25 5; a = a +... + 12 x 160 = 122 88 + 25 60 + 128 + 12 = 14988(10) 73 Cng tr s Hexa 8A9B + 37CD C268 B46E 1AC9 99A5 B7E5 + 2AF9 E2DE FA9D 2BC5 CED8 B800 + 0FFF 8E9A 3FE2 123 4 + ABCD 4B6D 3FEA CFFF + 1FFF A78D 45FB 879D + 5DF8 98BA 8A9D 74 Ni dung chng 2 2.1 Cỏc h m c bn 2. 2 Mó húa v lu tr d liu trong mỏy tớnh 2. 3 Biu din s nguyờn 2. 4 Cỏc phộp toỏn s hc vi s nguyờn 2. 5 Biu din s thc 2. 6 Biu din kớ t 75 Mó húa v lu tr... du A: an-1an -2 a2a1a0 Vi s dng: Bit an-1 = 0 Cỏc bit cũn li biu din ln ca s dng ú Dng tng quỏt ca s dng: 0an -2 a2a1a0 Giỏ tr ca s dng: n2 A ai 2i i 0 Di biu din ca s dng: [0, 2n-1-1] 96 Biu din s nguyờn cú du (tip) Vi s õm: c biu din bng s bự hai ca s dng tng ng Bit an-1 = 1 Dng tng quỏt ca s õm: 1an -2 a2a1a0 Giỏ tr ca s õm: A 2 n 1 n2 ai 2i i 0 Di biu din ca s õm: [-2n-1, -1] Di... (Bi-endian) 82 Bi tp D liu 16 bit cú giỏ tr l 5B9D c lu tr vo b nh chớnh t chc theo kiu Little-endian bt u t byte nh cú a ch l 123 4 Hóy xỏc nh ni dung cỏc byte nh cha lu tr d liu ú di dng nh phõn 83 Ni dung chng 2 2.1 Cỏc h m c bn 2. 2 Mó húa v lu tr d liu trong mỏy tớnh 2. 3 Biu din s nguyờn 2. 4 Cỏc phộp toỏn s hc vi s nguyờn 2. 5 Biu din s thc 2. 6 Biu din kớ t 84 Biu din s nguyờn 1 S nguyờn khụng du 2 S nguyờn... 0,1 ,2, 3,4,5,6,7,8,9,A,B,C,D,E,F Dựng vit gn cho s nh phõn 72 Mt s vớ d Nh phõn Hexa: Hexa Nh phõn: Thp phõn Hexa: 11 1011 1110 0110 (2) = 3BE6(16) 3E8(16) = 11 1110 1000 (2) 14988 ? 14988 : 16 = 936 d 936 : 16 = 58 d 58 : 16 = 3 d 3 : 16 = 0 d Nh vy, ta cú: 14988(10) = 3A8C(16) Hexa Thp phõn: 12 tc l C 8 10 tc l A 3 3A8C ? 3A8C (16) = 3 x 163 + 10 x 1 62 + 8 x 161 + 12 x 160 = 122 88 + 25 60 + 128 ... Xột n = 4 ch s, A = 28 74 S bự chớn ca A = (104 - 1) - 28 74 = 7 125 S bự mi ca A = 104 - 28 74 = 7 126 92 Khỏi nim v s bự S bự mt v s bự hai (h nh phõn): Gi s cú mt s nguyờn nh phõn A c biu din bi n bit Khi ú ta cú: S bự mt ca A = (2n - 1) - A S bự hai ca A = 2n - A NX: S bự hai = S bự mt + 1 Vớ d: Xột n = 4 bit, A = 0110 S bự mt ca A = (24 - 1) - 0110 = 1001 S bự hai ca A = 24 - 0110 = 1010 93... hiệu (sensor) Tín hiệu điện Bộ chuyển đổi liên tục t-ơng tự - số (ADC) Tín hiệu số Máy tính Tín hiệu vật lý Bộ tái tạo tín hiệu Tín hiệu điện Bộ chuyển đổi liên tục số - t-ơng tự (DAC) Tín hiệu số 79 di t d liu di t d liu: L s bit c s dng mó húa loi d liu tng ng Trong thc t, di t d liu thng l bi s ca 8 bit, vớ d: 8, 16, 32, 64 bit 80 2 Lu tr thụng tin trong b nh chớnh B nh chớnh thng c t chc... sai l 0 1111 1111 + 0000 0001 1 0000 0000 KQ sai: 25 5 + 1 = 0 ? (do phộp cng b nh ra ngoi) 90 Vi n = 16 bit, 32 bit, 64 bit n = 16 bit: Di biu din l [0, 65535] Kiu d liu tng ng trong Turbo C l kiu unsigned int Vớ d: unsigned int a; a = 0xffff; a = a + 1; printf(%d,a); n = 32 bit: Di biu din l [0, 23 2-1] n = 64 bit: Di biu din l [0, 26 4-1] 91 2 S nguyờn cú du a Khỏi nim v s bự S bự chớn v s... din bng s bự hai ca s dng tng ng Bit an-1 = 1 Dng tng quỏt ca s õm: 1an -2 a2a1a0 Giỏ tr ca s õm: A 2 n 1 n2 ai 2i i 0 Di biu din ca s õm: [-2n-1, -1] Di biu din ca s nguyờn cú du n bit l [-2n-1, 2n-1-1] 97

Ngày đăng: 28/09/2015, 10:40

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan