Bài giảng Hệ thống thông tin - Chương 2, Phần I: Biểu diễn dữ liệu trong máy tính - Ngô Văn Linh

pdf 93 trang Hùng Dũng 05/01/2024 1000
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ thống thông tin - Chương 2, Phần I: Biểu diễn dữ liệu trong máy tính - Ngô Văn Linh", để 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:

  • pdfbai_giang_he_thong_thong_tin_chuong_2_phan_i_bieu_dien_du_li.pdf

Nội dung text: Bài giảng Hệ thống thông tin - Chương 2, Phần I: Biểu diễn dữ liệu trong máy tính - Ngô Văn Linh

  1. Chương 2: Biểu diễn dữ liệu trong máy tính Ngô Văn Linh Bộ môn Hệ thống thông tin Viện Công nghệ thông tin và Truyền thông Đại học Bách Khoa Hà Nội 1
  2. Nội dung chương này  2.1. Biểu diễn số trong các hệ đếm  2.1.1. Hệ đếm cơ số b  2.1.2. Hệ đếm thập phân  2.1.3. Hệ đếm nhị phân  2.1.4. Hệ đếm bát phân  2.1.5. Hệ đếm thập lục phân  2.1.6. Chuyển đổi một số từ hệ thập phân sang hệ đếm cơ số b  2.1.7. Mệnh đề logic 2
  3. Nội dung chương này (tiếp)  2.2. Biểu diễn dữ liệu trong máy tính và đơn vị thông tin  2.2.1. Nguyên tắc chung  2.2.2. Đơn vị thông tin  2.3. Biểu diễn số nguyên  2.3.1. Số nguyên không dấu  2.3.2. Số nguyên có dấu  2.4. Phép toán số học với số nguyên  Cộng/trừ  Nhân/chia 3
  4. Nội dung chương này (tiếp)  2.5. Tính toán logic với số nhị phân  2.6. Biểu diễn ký tự  2.6.1. Nguyên tắc chung  2.6.2. Bộ mã ASCII  2.6.3. Bộ mã Unicode  2.7. Biểu diễn số thực  2.7.1. Nguyên tắc chung  2.7.2. Chuẩn IEEE754/85 4
  5. 2.1. Biểu diễn số trong các hệ đếm  Hệ đếm là tập hợp các ký hiệu và quy tắc sử dụng tập ký hiệu đó để biểu diễn và xác định giá trị các số.  Mỗi hệ đếm có một số chữ số/ký số (digits) hữu hạn.  Tổng số chữ số của mỗi hệ đếm được gọi là cơ số (base hay radix), ký hiệu là b. 5
  6. 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ệ mười sáu (Hexadecimal System) dùng để viết gọn cho số nhị phân  Hệ bát phân (Octal System) 6
  7. 2.1.1. Hệ đếm cơ số b  Hệ đếm cơ số b (b≥2 và nguyên dương) mang tính chất sau:  có b chữ số (ký số) để thể hiện giá trị số. Ký số nhỏ nhất là 0 và lớn nhất là b-1  giá trị (trọng số) vị trí thứ n trong một số của hệ đếm bằng cơ số b lũy thừa n: bn  Số N(b) trong hệ đếm cơ số b được biểu diễn bởi: 7
  8. 2.1.1. Hệ đếm cơ số b  trong đó, số N(b) có n+1 chữ số biểu diễn cho phần nguyên và m chữ số lẻ biểu diễn cho phần b_phân, và có giá trị là: 8
  9. 2.1.2. Hệ đếm thập phân (Decimal System, b=10)  Hệ đếm thập phân hay hệ đếm cơ số 10 là một trong các phát minh của người Ả rập cổ, bao gồm 10 chữ số theo ký hiệu sau: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9  Quy tắc tính giá trị của hệ đếm này là mỗi đơn vị ở một hàng bất kỳ có giá trị bằng 10 đơn vị của hàng kế cận bên phải. Ở đây b=10 9
  10. 2.1.2. Hệ đếm thập phân (Decimal System, b=10)  Bất kỳ số nguyên dương trong hệ thập phân có thể biểu diễn như là một tổng các số hạng, mỗi số hạng là tích của một số với 10 lũy thừa, trong đó số mũ lũy thừa được tăng thêm 1 đơn vị kể từ số mũ lũy thừa phía bên phải nó. Số mũ lũy thừa của hàng đơn vị trong hệ thập phân là 0 10
  11. 2.1.2. Hệ đếm thập phân (Decimal System, b=10)  Ví dụ: Số 5246 có thể được biểu diễn như sau: 5246 = 5x103 + 2x102 + 4x101 + 6x100 = 5 x 1000 + 2 x 100 + 4 x 10 + 6 x 1  Thể hiện như trên gọi là ký hiệu mở rộng của số nguyên vì 5246 = 5000 + 200 + 40 + 6 11
  12. 2.1.2. Hệ đếm thập phân (Decimal System, b=10)  Như vậy, trong số 5246: chữ số 6 trong số nguyên đại diện cho giá trị 6 đơn vị, chữ số 4 đại diện cho giá trị 4 chục (hàng chục), chữ số 2 đại diện cho giá trị 2 trăm (hàng trăm) và chữ số 5 đại diện cho giá trị 5 nghìn (hàng nghìn)  Phần thập phân: 2 1 0 -1 -2  254.68 = 2x10 + 5x10 + 4x10 + 6x10 + 8x10 12
  13. 2.1.3. Hệ đếm nhị phân (Binary System, b=2)  Với cơ số b=2, chúng ta có hệ đếm nhị phân. Đây là hệ đếm đơn giản nhất với 2 chữ số là 0 và 1. Mỗi chữ số nhị phân gọi là BIT (viết tắt từ chữ BInary digiT). Vì hệ nhị phân chỉ có 2 chữ số là 0 và 1, nên khi muốn diễn tả một số lớn hơn cần kết hợp nhiều bit với nhau. Ta có thể chuyển đổi số trong hệ nhị phân sang số trong hệ thập phân quen thuộc. 13
  14. 2.1.3. Hệ đếm nhị phân (Binary System, b=2)  Ví dụ: Số 11101.11(2) sẽ tương đương với giá trị thập phân là : 14
  15. 2.1.4. Hệ đếm bát phân  Nếu dùng 1 tập hợp 3 bit thì có thể biểu diễn 8 trị khác nhau : 000, 001, 010, 011, 100, 101, 110, 111. Các trị này tương đương với 8 trị trong hệ thập phân là 0, 1, 2, 3, 4, 5, 6, 7. Tập hợp các chữ số này gọi là hệ bát phân, là hệ đếm với b = 8 = 23. Trong hệ bát phân, giá trị vị trí là lũy thừa của 8.  Ví dụ: 2 1 0 -1 -2 235.64(8)=2x8 + 3x8 + 5x8 + 6x8 + 4x8 = 157. 8125(10) 15
  16. 2.1.5. Hệ đếm thập lục phân (Hexa- decimal System, b=16)  Hệ đếm thập lục phân là hệ cơ số b=16 = 24, tương đương với tập hợp 4 chữ số nhị phân (4 bit). Khi thể hiện ở dạng hexa-decimal, ta có 16 chữ số gồm 10 chữ số từ 0 đến 9, và 6 chữ in A, B, C, D, E, F để biểu diễn các giá trị số tương ứng là 10, 11, 12, 13, 14, 15. Với hệ thập lục phân, giá trị vị trí là lũy thừa của 16 16
  17. 2.1.5. Hệ đếm thập lục phân (Hexa- decimal System, b=16)  Ví dụ: 4 3 2 34F5C(16)=3x16 + 4x16 + 15x16 + 1 0 5x16 + 12x16 = 216294(10)  Ghi chú: Một số ngôn ngữ lập trình quy định viết số hexa phải có chữ H ở cuối chữ số. Ví dụ: Số 15 viết là FH. 17
  18. 2.1.6. Chuyển đổi một số từ hệ thập phân sang hệ cơ số b  Đổi phần nguyên từ hệ thập phân sang hệ cơ số b.  Lấy số nguyên thập phân N(10) lần lượt chia cho b cho đến khi thương số bằng 0. Kết quả số chuyển đổi N(b) là các số dư trong phép chia viết theo thứ tự ngược lại.  Đổi phần thập phân từ hệ thập phân sang hệ cơ số b  Lấy phần thập phân N(10) lần lượt nhân với b cho đến khi phần thập phân của tích số bằng 0. Kết quả số chuyển đổi N(b) là các số phần nguyên trong phép nhân viết ra theo thứ tự tính toán. 18
  19. Lưu ý 1: Đổi từ hệ 10 sang hệ 2  Chuyển đổi phần nguyên và phần lẻ riêng  Chuyển đổi phần nguyên: 2 cách  Phân tích thành tổng các số lũy thừa của 2  Chia cho 2 được thương và số dư, sau đó lại lấy thương chia tiếp cho 2 cho đến khi thương = 0, viết các số dư theo thứ tự ngược lại 19
  20. Đổi từ hệ 10 sang hệ 2  Ví dụ: 12 = 8 + 4 = 23 + 22 Kết quả: 12(10) = 1100(2) 20
  21. Đổi từ hệ 10 sang hệ 2  Chuyển đổi phần lẻ  Lấy phần lẻ nhân 2 rồi lấy phần nguyên, biểu diễn các phần nguyên theo chiều thuận  Ví dụ: 21
  22. Đổi từ hệ 10 sang hệ 2  12.6875(10) = 1100.1011 (2) 22
  23. Đổi từ hệ 10 sang hệ 2  Bài tập: đổi số 35.375(10) sang hệ 2 23
  24. Lưu ý 2: chuyển đổi nhị phân sang Hexa  Duyệt từ phải sang trái, chia thành các nhóm 4 bit, sau đó thay từng nhóm 4 bit bằng một chữ số Hexa  Ví dụ: 10 00112 = 2316 2 3 24
  25. Chuyển đổi thập phân sang Hexa  Thập phân Hexa: 14988 ? 14988 : 16 = 936 dư 12 tức là C 936 : 16 = 58 dư 8 58 : 16= 3 dư 10 tức là A 3 : 16= 0 dư 3 Như vậy, ta có: 14988(10) = 3A8C(16) 25
  26. 2.1.7. Mệnh đề logic  Mệnh đề logic là mệnh đề chỉ nhận một trong 2 giá trị : Đúng (TRUE) hoặc Sai (FALSE), tương đương với TRUE = 1 và FALSE = 0.  Qui tắc: TRUE = NOT FALSE và FALSE = NOT TRUE  Phép toán logic áp dụng cho 2 giá trị TRUE và FALSE ứng với tổ hợp AND (và) và OR (hoặc) như sau: 26
  27. Mệnh đề logic 27
  28. 2.2. Biểu diễn dữ liệu trong máy tính và đơn vị thông tin  2.2.1. Nguyên tắc chung  Thông tin và dữ liệu mà con người hiểu được tồn tại dưới nhiều dạng khác nhau, ví dụ như các số liệu, các ký tự văn bản, âm thanh, hình ảnh, nhưng trong máy tính mọi thông tin và dữ liệu đều được biểu diễn bằng số nhị phân (chuỗi bit).  Để đưa dữ liệu vào cho máy tính, cần phải mã hoá nó về dạng nhị phân. Với các kiểu dữ liệu khác nhau cần có cách mã hoá khác nhau. Cụ thể: 28
  29. Nguyên tắc chung (tiếp)  Các dữ liệu dạng số (số nguyên hay số thực) sẽ được chuyển đổi trực tiếp thành các chuỗi số nhị phân theo các chuẩn xác định.  Các ký tự được mã hoá theo một bộ mã cụ thể, có nghĩa là mỗi ký tự sẽ tương ứng với một chuỗi số nhị phân.  Các dữ liệu phi số khác như âm thanh, hình ảnh và nhiều đại lượng vật lý khác muốn đưa vào máy phải số hoá (digitalizing). Có thể hiểu một cách đơn giản khái niệm số hoá như sau: các dữ liệu tự nhiên thường là quá trình biến đổi liên tục, vì vậy để đưa vào máy tính, nó cần được biến đổi sang một dãy hữu hạn các giá trị số (nguyên hay thực) và được biểu diễn dưới dạng nhị phân. 29
  30. Nguyên tắc chung (tiếp)  Với các tín hiệu như âm thanh, video, hay các tín hiệu vật lý khác, qui trình mã hoá được biểu diễn như sau: 30
  31. Nguyên tắc chung (tiếp)  Tuy rằng mọi dữ liệu trong máy tính đều ở dạng nhị phân, song do bản chất của dữ liệu, người ta thường phân dữ liệu thành 2 dạng:  Dạng cơ bản: gồm dạng số (nguyên hay thực) và dạng ký tự. Số nguyên không dấu được biểu diễn theo dạng nhị phân thông thường, số nguyên có dấu theo mã bù hai, còn số thực theo dạng dấu phảy động. Để biểu diễn một dữ liệu cơ bản, người ta sử dụng 1 số bit. Các bit này ghép lại với nhau để tạo thành cụm: cụm 8 bít, cụm 16 bít,  Dạng có cấu trúc: Trên cơ sở dữ liệu cơ bản, trong máy tính, người ta xây dựng nên các dữ liệu có cấu trúc phục vụ cho các mục đích sử dụng khác nhau. Tuỳ theo cách “ghép” chúng ta có mảng, tập hợp, xâu, bản ghi, 31
  32. 2.2.2. Đơn vị thông tin  Đơn vị nhỏ nhất để biểu diễn thông tin gọi là bit. Một bit tương ứng với một sự kiện có 1 trong 2 trạng thái.  Ví dụ: Một mạch đèn có 2 trạng thái là:  Tắt (Off) khi mạch điện qua công tắc là hở  Mở (On) khi mạch điện qua công tắc là đóng  Số học nhị phân sử dụng hai ký số 0 và 1 để biểu diễn các số. Vì khả năng sử dụng hai số 0 và 1 là như nhau nên một chỉ thị chỉ gồm một chữ số nhị phân có thể xem như là đơn vị chứa thông tin nhỏ nhất. 32
  33. Đơn vị thông tin (tiếp)  Bit là chữ viết tắt của BInary digiT. Trong tin học, người ta thường sử dụng các đơn vị đo thông tin lớn hơn như sau: 33
  34. 2.3. Biểu diễn số nguyên  Số nguyên gồm số nguyên không dấu và số nguyên có dấu.  Về nguyên tắc đều dùng 1 chuỗi bit để biểu diễn.  Đối với số nguyên có dấu, người ta sử dụng bit đầu tiên để biểu diễn dấu và bit này gọi là bit dấu. 34
  35. 2.3.1. Biểu diễn 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: n  Dải biểu diễn của A: từ 0 đến 2 - 1 35
  36. Ví dụ:  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 36
  37. Ví dụ (tiếp)  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 Xác định giá trị của X,Y 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 37
  38. Với n = 8 bit  Dải biểu diễn là [0, 255]  Trục số học máy tính: 0000 0000 = 0 0000 0001 = 1 0000 0010 = 2 0000 0011 = 3 1111 1111 = 255 38
  39. Biểu diễn số nguyên không dấu  Với n = 16 bit:  dải biểu diễn: [0, 65535]  Với n = 32 bit: 32  dải biểu diễn: [0, 2 -1] 39
  40. 2.3.2. Biểu diễn số nguyên có dấu  Khái niệm về số bù  Số bù 9 và số bù 10 (hệ thập phân)  Giả sử có 1 số nguyên có dấu A được biểu diễn bởi n chữ số thập phân. n  Số bù 9 của A: (10 - 1) – A n  Số bù 10 của A: 10 – A  Số bù 10 = số bù 9 + 1 40
  41. Biểu diễn số nguyên có dấu  Số bù 1 và số bù 2 (hệ nhị phân)  Giả sử có 1 số nguyên nhị phân A được biểu diễn = n bit nhị phân n  Số bù 1 của A: (2 - 1) – A n  Số bù 2 của A: 2 – A  Số bù 2 = số bù 1 + 1 41
  42. Số bù 1 và bù 2 (tiếp)  Ví dụ: n = 4 bit, A = 0110 1111 10000 = số bù 1 +1 - - 0110 0110 Số bù 1: 1001 Số bù 2: 1010 Nhận xét: số bù 1 Nhận xét: A + số bù 2 của là đảo các bit nó, bỏ bit ngoài cùng đi, 0 1 ta được 0000 42
  43. Biểu diễn số nguyên có dấu bằng số bù 2  Dùng n bit để biểu diễn số nguyên có dấu: an-1an-2 a2a1a0  Với số không âm:  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 i A  ai 2 n-1 0  Dải biểu diễn: [0,2 -1] 43
  44. Biểu diễn số nguyên có dấu bằng số bù 2  Với số âm: được biểu diễn bằng số bù 2 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: n 2 n 1 i A 2  ai 2 n-1,  Dải biểu diễn: [-2 -1] 0 44
  45. Biểu diễn số nguyên có dấu bằng số bù 2  Kết hợp lại, ta có dải biểu diễn của số nguyên có dấu n bit là: n-1 n-1  [-2 , 2 - 1]  Công thức tổng quát: n 2 n 1 i A an 1 2  ai 2 0 45
  46. Một số ví dụ về số nguyên có dấu  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 46
  47. Bài tập  Biểu diễn các số nguyên sau với n = 8 bit:  X=+58  Y=-80  Xác định giá trị của số nguyên có dấu 8 bit: Z = 1100 1001 47
  48. Trường hợp cụ thể  Trường hợp 8 bit: biểu diễn các giá trị từ -128 đến +127 0000 0000 = 0 0000 0001 = +1 0111 1111 = +127 1000 0000 = -128 1000 0001 = -127 1111 1110 = -2 1111 1111 = -1 48
  49. Trường hợp cụ thể  Với n = 16 bit, dải biểu diễn:  [-32768, + 32767] 31 31  Với n = 32 bit: -2 đến 2 – 1 63 63  Với n = 64 bit: -2 đến 2 – 1  Chuyển đổi từ byte thành word:  đối với số dương thêm 8 bit 0 bên trái +19 = 0001 0011 (8 bit) +19 = 0000 0000 0001 0011 (16 bit)  đối với số âm thêm 8 bit 1 bên trái -19 = 1110 1101 (8 bit) -19 = 1111 1111 1110 1101 (16 bit) 49
  50. Binary Code Decimal Code  Dùng 4 bit để mã hóa từng chữ số thập phân từ 0 đến 9 0 0000 1 0001 8 1000 9 1001  Có 6 tổ hợp không dùng: 1010, 1011, 1100, 1101, 1110, 1111 50
  51. Binary Code Decimal Code  35 0011 0101BCD  61 0110 0001BCD  1087 0001 0000 1000 0111BCD  Cứ 1 chữ số thập phân đơn lẻ được mã hóa bằng 4 bit 51
  52. Binary Code Decimal Code Kết quả  Phép cộng số BCD: đúng, không 35 0011 0101 phải hiệu BCD chỉnh + 61 +0110 0001BCD 96  1001 0110BCD 87 1000 0111BCD Kết quả sai, phải hiệu + 96 +1001 0110BCD chỉnh 183 1 0001 1101 BCD 52
  53. Binary Code Decimal Code  Hiệu chỉnh:  Nhận xét: 7 + 6 hay 8 + 9 đều vượt 9 nên có nhớ.  Hiệu chỉnh bằng cách cộng thêm 6 ở những vị trí có nhớ (>9) 1 0001 1101 + 0110 0110  hiệu chỉnh 0001 1000 0011BCD kết quả đúng 53
  54. 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ữ: 0011 0101  BCD gói (packed BCD): hai số BCD được lưu trữ trong một byte. Ví dụ: Số 35 được lưu trữ: 0011 0101 54
  55. 2.4. Các phép toán số học với số nguyên  Phép cộng số nguyên không dấu Y X n bit n bit Cout C Bộ cộng n-bit in n bit S 55
  56. 2.4. Các phép toán số học với số nguyên  Phép cộng số nguyên không dấu  Tiến hành cộng lần lượt từng bít từ phải qua trái.  Khi cộng hai số nguyên không dấu n bits ta thu được một số nguyên không dấu cũng n bits. n-1  Nếu tổng của hai số đó lớn hơn 2 thì khi đó sẽ tràn số (Cout = 1) và kết quả sẽ là sai.  Để tránh hiện tượng này, ta dùng nhiều bit hơn 56
  57. Ví dụ phép cộng số nguyên không dấu  Với trường hợp 8 bit, nếu tổng nhỏ hơn 255 thì kết quả đúng 57
  58. Phép đảo dấu  Phép đảo dấu thực chất là lấy bù 2 +37 = 0010 0101 -37 = 1101 1011 bù 1: 1101 1010 bù 1: 0010 0100 +1 +1 bù 2: 1101 1011 = -37 bù 2: 0010 0101 = +37 58
  59. Cộng hai số nguyên có dấu Khi cộng 2 số nguyên có dấu n bit, không quan tâm đến bit Cout, và kết quả nhận được là n bit:  Cộng 2 số khác dấu kết quả luôn đúng  Cộng 2 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)] 59
  60. Cộng hai số nguyên có dấu- ví dụ: (+70) = 0100 0110 +(+42)= 0010 1010 +112 = 0111 0000 = +112 (+97) = 0110 0001 +(-52) = 1100 1100 (vì +52 = 0011 0100) +45 = 1 0010 1101 = +45 60
  61. Cộng hai số nguyên có dấu- ví dụ: (+75) = 0100 1011 +(+82)= 0101 0010 +157 = 1001 1101 = -99 tổng vượt +127 chuyển sang bên âm (-104) = 1001 1000 (vì +104 = 0110 1000) + (-43) = 1101 0101 (vì +43 = 0010 1011) -147 = 1 0110 1101 = +109 sai không âm + âm dương quan tâm 61
  62. 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ù 2 của số trừ Y để được –Y, sau đó cộng với số bị trừ X 62
  63. Nhân số nguyên không dấu 63
  64. 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 bít của số nhân = 0 thì tích riêng phần = 0  nếu bít của số nhân = 1 thì tích riêng phần = số bị nhân  tích riêng phần tiếp theo được dịch trái 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 là 2n bit (không bao giờ tràn) 64
  65. Nhân hai số nguyên có dấu  Sử dụng thuật giải nhân hai số nguyê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 2 số dương bằng thuật giải đã học, được tích của 2 số dương  Bước 3: hiệu chỉnh dấu của tích như sau:  nếu 2 thừa số ban đầu cùng dấu thì không cần hiệu chỉnh  nếu 2 thừa số ban đầu là khác dấu thì ta lấy bù 2 của tích ở kết quả bước 2 65
  66. Chia số nguyên không dấu 66
  67. 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à 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 67
  68. 2.5. Tính toán logic với số nhị phân AND OR XOR 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 68
  69. 2.5. Tính toán logic với số nhị phân NOT 0 1 1 0 69
  70. 2.5. Tính toán logic với số nhị phân  Thực hiện các phép toán logic với 2 số nhị phân:  Kết quả là 1 số nhị phân khi thực hiện các phép toán logic với từng cặp bit của 2 số nhị phân đó  Các phép toán này chỉ tác động lên từng cặp bit mà không ảnh hưởng đến bit khác. 70
  71. 2.5. Tính toán logic với số nhị phân  VD: A = 1010 1010 và B = 0000 1111 AND OR XOR NOT 1010 1010 01010101 0000 1111 11110000 00001010 10101111 10100101 Nhận xét: +Phép AND dùng để xoá một số bit và giữ nguyên 1 số bit còn lại. +Phép OR dùng để thiết lập 1 số bit và giữ nguyên 1 số bit khác. 71
  72. 2.6. Biểu diễn ký tự  Nguyên tắc chung:  Các ký tự cũng cần được chuyển đổi thành chuỗi bit nhị phân gọi là mã ký tự.  Số bit dùng cho mỗi ký tự theo các mã khác nhau là khác nhau. Vd : Bộ mã ASCII dùng 8 bit cho 1 ký tự. Bộ mã Unicode dùng 16 bit. 72
  73. Bộ mã ASCII (American Standard Code for Information Interchange)  Do ANSI (American National Standard Institute) thiết kế   ASCII là bộ mã được dùng để trao đổi thông tin chuẩn của Mỹ. Lúc đầu chỉ dùng 7 bit (128 ký tự) sau đó mở rộng cho 8 bit và có thể biểu diễn 256 ký tự khác nhau trong máy tính 8  Bộ mã 8 bit mã hóa được cho 2 = 256 kí tự, có mã từ 0016  FF16, bao gồm:  128 kí tự chuẩn có mã từ 0016  7F16  128 kí tự mở rộng có mã từ 8016  FF16 73
  74. Bộ mã ASCII (tiếp)  95 kí tự hiển thị được:có mã từ 2016 ÷ 7E16  26 chữ cái hoa Latin 'A' ÷ 'Z' có mã từ 4116 ÷ 5A16  26 chữ cái thường Latin 'a' ÷ 'z' có mã từ 6116 ÷ 7A16  10 chữ số thập phân '0' ÷ '9' có mã từ 3016 ÷ 3916 75
  75. Bộ mã ASCII (tiếp)  95 ký tự hiển thị được:  Các dấu câu: . , ? ! : ;  Các dấu phép toán: + - * /  Một số kí tự thông dụng: #, $, &, @,  Dấu cách (mã là 2016)  33 mã điều khiển: mã từ 0016 ÷ 1F16 và 7F16 dùng để mã hóa cho các chức năng điều khiển 76
  76. Điều khiển định dạng BS Backspace – Lùi lại một vị trí. Ký tự điều khiển con trỏ lùi lại một vị trí. HT Horizontal Tab – Ký tự điều khiển con trỏ dịch đi một khoảng định trước LF Line Feed – Ký tự điều khiển con trỏ xuống dòng VT Vertical Tab – Ký tự điều khiển con trỏ dịch đi một số dòng FF Form Feed – Ký tự điều khiển con trỏ chuyển xuống đầu trang tiếp theo. CR Carriage Return – Ký tự điều khiển con trỏ về đầu dòng hiện hành. 77
  77. Các ký tự mở rộng của bảng mã ASCII  Được định nghĩa bởi:  Nhà chế tạo máy tính  Người phát triển phần mềm  Ví dụ:  Bộ mã ký tự mở rộng của IBM: được dùng trên máy tính IBM-PC.  Bộ mã ký tự mở rộng của Apple: được dùng trên máy tính Macintosh.  Các nhà phát triển phần mềm tiếng Việt cũng đã thay đổi phần này để mã hoá cho các ký tự riêng của chữ Việt, ví dụ như bộ mã TCVN 5712. 78
  78. Bộ mã Unicode  Do các hãng máy tính hàng đầu thiết kế  Là bộ mã 16-bit, Vậy số ký tự có thể biểu diễn (mã hoá) là 216  Được thiết kế cho đa ngôn ngữ, trong đó có tiếng Việt 79
  79. 2.7. Biểu diễn số thực  2.7.1. Nguyên tắc chung  Để biểu diễn số thực, trong máy tính người ta thường dùng ký pháp dấu phẩy động (Floating Point Number).  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: E  X = M * R  M là phần định trị (Mantissa)  R là cơ số (Radix)  E là phần mũ (Exponent) 80
  80. 2.7.2. Chuẩn IEEE754/85  Cơ số R = 2  Các dạng:  32 – bit (4 byte float trong C)  48 – bit (real trong Pascal)  64 – bit (8 byte)  80 – bit (10 byte) 81
  81. 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  trường S nằm bên trái nhất biểu diễn dấu  e: mũ  m: định trị 82
  82. 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  khi e = 0 thì phần mũ = -127, khi e = 127 thì phần mũ = 0  emax = 255 (8 bit)  giá trị 127 gọi 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 83
  83. Dạng 32 – bit  Các quy ước đặc biệt  Các bit của e = 0, các bit của m = 0 thì X = 0 x000 0000 0000 0000 0000 0000 0000 0000 X = 0  Các bit của e = 1, các bit của m = 0 thì X = x111 1111 1000 0000 0000 0000 0000 0000 X =  Các bit của e = 1, còn m có ít nhất 1 bit = 1 thì nó không biểu diễn cho số nào cả (NaN – Not A Number) 84
  84. Dạng 32 – bit  Dải biểu diễn giá trị -127 +127  2 đến 2 -38 +38  10 đến 10 -2+127 -2-127 +2-127 +2+127 85
  85. Dạng 32 – bit. Ví dụ:  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 86
  86. Dạng 32 – bit. Ví dụ (tiếp):  0011 1111 1000 0000 0000 0000 0000 0000  Kết quả = +1.0 87
  87. 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 -308 +308  Dải giá trị biểu diễn: 10 đến 10 88
  88. 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 -4932 +4932  Dải giá trị biểu diễn: 10 đến 10 89
  89. 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 90
  90. 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ị. 91
  91. 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 hóa kết quả. 92
  92. Hỏi - đáp 93