1 bit có thể biểu diễn bao nhiêu giá trị?
III. BIỂU DIỄN TH�NG TIN TR�N M�Y T�NH 1.Biểu diễn các ký tự Một trong các phương pháp để biểu diễn các ký tự trong máy tính là thiết kế một bộ mã. Ý nghĩa của cách thiết kế này là các ký tự khác nhau sẽ được đặc trưng bởi một nhóm bit duy nhất khác nhau, bằng cách này thông tin sẽ được mã hóa thành một chuỗi bit trong bộ nhớ hoặc ở các thiết bị lưu trữ. Tuy nhiên, sẽ có nhiều bộ mã khác nhau. Ðể giải quyết vấn đề này, Viện Chuẩn Hóa Hoa Kỳ (American National Standards Institute) đã đưa ra bộ mã chuẩn trong giao tiếp thông tin trên máy tính gọi là bộ mã ASCII (American Standard Code for Information Interchage) và đã trở thành chuẩn công nghiệp cho các nhà sản xuất máy tính. Bộ mã này dùng 7 bit để biểu diễn các ký tự, tuy vậy mỗi ký tự trong bảng mã ASCII vẫn chiếm hết một byte khi thực hiện trong bộ nhớ máy tính, bit dư ra sẽ bị bỏ qua hoặc được dùng cho biểu diễn một cho ký tự đặc biệt. Trong bảng mã ASCII sẽ bao gồm các ký tự chữ hoa, thường, ký tự số, ký tự khoảng trắng,...
Hiện nay bảng mã ASCII vẫn là bảng mã được sử dụng nhiều nhất. Một bảng mã khác cũng không kém phần được ưa chuộng là EBCDIC (Extended Binary Code Decimal Interchange Code) là bộ mã ở đó mỗi ký tự được biểu diễn với 8 bit, bộ mã này của công ty IBM. 2. Biểu diễn gi� trị của c�c con số Mặc dù phương pháp lưu trữ thông tin như là sự mã hóa các ký tự bằng các dãy bit, nhưng nó dường như không hiệu quả khi lưu trữ dữ liệu thuần số. Chúng ta hãy xem tại sao điều này xảy ra? Chúng ta muốn lưu trữ số 25, nếu dùng bảng mã ASCII để biểu diễn thì mỗi ký số sẽ cần đến một byte lưu trữ do đó ta cần tới 16 bit lưu trữ. Hơn thế nữa, đối với các con số lớn hơn muốn lưu trữ ta phải cần phải dùng từ 16 bit trở lên. Một phương pháp hiệu quả hơn để lưu trữ giá trị cho với dữ liệu là số ở máy tính là dùng hệ nhị phân, phương pháp này dựa trên ví dụ sau: Một đồng hồ đo kilomet của xe, khi xe còn mới thì đồng hồ chỉ ở mức 0000000 Mỗi số 0 đặc trưng cho một vòng quay, vòng quay sẽ nhận lần lượt các con số 1, 2, 3, 4, 5, 6, 7, 8, 9. Khi xe bắt đầu chạy thì vòng quay bên phải nhất sẽ bắt thay đổi cho đến khi chỉ số ở đồng hồ là 00000009 Vào thời điểm tiếp theo vòng quay phải nhất sẽ đẩy vòng quay kế lên một đơn vị, kết quả là vòng quay phải nhất đã quay được một vòng và sẽ trở về 0. Lúc đó chỉ số ở đồng hồ như sau: 00000010 Khi đó xe tiếp tục chạy và vòng quay phải nhất sẽ tiếp tục thay đổi cho đến 9 và sau đó sẽ đẩy vòng quay kế lên 1, khi đó chỉ số đồng hồ chuyển từ 00000019 thành 00000020 Phương pháp đếm trên hệ nhị phân cũng giống như quá trình trên, mỗi vòng chỉ có 0 và 1 khi đó 0 thay thế cho 9. Nếu đồng hồ kilomet dựa trên hệ đếm nhị phân thì chúng sẽ xuất hiện lần lượt như sau 00000000 00000001 00000010 00000011 00000100 00000101 00000110 Sự thay đổi chỉ số trên thực chất là quá trình đếm từ 0 đến 6, nếu thay đổi từ 00000011 thành 00000100 thì cũng giống như chỉ số đồng hồ chuyển từ 00000099 thành 00000100. Nên nhớ rằng việc chuyển đổi từ 9 thành 0 ở đồng hồ tương tự cho chuyển đổi từ 1 thành 0 khi ở hệ nhị phân. Quay trở lại vấn đề biểu diễn giá trị số khi dùng hệ nhị phân, ta nhận thấy một byte có thể lưu trữ một số nguyên có giá trị trong khoảng từ 0 đến 255 (00000000 đến 11111111), với 2 byte có thể lưu trữ một số nguyên có giá trị từ 0 đến 65535. Cách làm này sẽ làm tăng hiệu quả khả năng lưu trữ các số nguyên so với cách dùng một byte cho một chữ số trong bảng mã ASCII. Một lý do khác sâu xa hơn cho việc lưu trữ thông tin ở dạng số khi dùng hệ nhị phân hay hơn dùng bảng mã, đó là hệ thống nhị phân mô tả chính xác kỹ thuật lưu trữ dùng bit trong máy tính. Ngoài ra ta có thể sử dụng hệ nhị phân để biểu diễn các số nguyên âm với phương pháp bù 2 (two’s complement notation) hoặc dùng phương pháp dấu chấm động (floating point notation) để biểu diễn hỗn số. Tuỳ theo giá trị của số mà ta có phương pháp biểu diể�n khác nhau. Ở đây ta có hai khái niệm là tràn số (overflow) đó là khi giá trị của số qua lớn vượt quá số lượng bit biểu diễn của chúng hoặc làm tròn (round-off) xảy ra khi phân số có giá trị bị làm tròn dẫn đến sai số. Các số biểu diễn ở hệ nhị phân sẽ là một chuỗi bit, ứng với mỗi vị trí bit được gán một trọng số. Các trọng số này được xác định từ phải sang trái với các giá trị là 1, 2, 4, 8,... Với vị trí các bit tương ứng 0, 1, 2, 3,... Dựa theo qui luật : số sau sẽ bằng 2 lần số trước, ví dụ với biểu diễn nhị phân 100101 là biểu diễn nhị phân của 37. Phương pháp chuyển đổi giữa hệ thập phân và nhị phân bạn đọc có thể tham khảo ở phần 1. Sau đây chúng ta cùng tìm hiểu các thao tác xử lý khác trên hệ nhị phân. 3. Cộng nhị phânTrong hệ nhị phân thao tác cộng cũng giống như thao tác cộng trong hệ thập phân với một số qui tắc sau 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10Khi cộng vẫn thực hiện cộng các cột từ phải sang trái, ứng với mỗi cột ta cộng 2 số theo qui tắc trên, nếu có nhớ thì cộng nhớ sang cột kế bên
0 0 1 1 1010+00 0 1 1011Nhớ 1 01010 0 1 11010+00 0 11011Nhớ 1 101010 0 11 1010+00 01 1011Nhớ 1 010101001 1 1010+0001 101101010101001 1 1010+0001 1011=01010101Các phép toán khác ta cũng thực hiện tương tự. Khi nghiên cứu kỹ thuật biểu diễn các số thông qua biểu diễn số trong hệ nhị phân đại diện cho các bit, ta chỉ đề cập đến các số nguyên dương, còn các số âm thì sao? Chính điều này ta cần có một hệ có thể biểu diễn cho cả số âm và số dương. Các nhà toán học trong thời gian dài đã quan tâm đến hệ thống biểu diễn số, nhiều ý kiến đã được đưa ra, trong các ý kiến đó, có một số ý kiến rất phù hợp với khả năng thiết kế các mạch điện trong máy tính, và hầu hết các ý kiến này vẫn dựa trên hệ nhị phân nhưng có một số biến đổi đó là hệ nhị phân có dấu. Có ba cách biểu diễn một số âm ở hệ nhị phân có dấu đó là : phương pháp dấu lượng. 4. Phương pháp dấu lượng (sign - magnitude)Theo cách biểu diễn này, bit cực trái được dùng làm bit dấu (1 là dấu + và 0 là dấu - ) các bit còn lại biểu diễn độ lớn của số.
Mẩu bit Giá trị được biểu diễn 1111 7 1110 6 1101 5 1100 4 1011 3 1010 2 1001 1 1000 0 0111 -1 0110 -2 0101 -3 0100 -4 0011 -5 0010 -6 0001 -7 0000 -8 Qui tắc 5
Ngoài cách biểu diễn bằng dấu lượng các nhà toán học còn đưa ra 2 cách biểu diễn sau: 5. Phương pháp biểu diễn số bù 1 (one’s complement) Theo cách biểu diễn này vẫn dùng bit cực trái làm bit dấu nhưng với qui định có thay đổi là 0 cho số dương và 1 cho số âm. Ðể biểu diễn số n theo dạng bù 1 ta thực hiện các thao tác sau : Qui tắc 6 :
6. Phương pháp biểu diễn số bù 2 (two’s complement) Theo cách biểu diễn này vẫn sử dụng bit cực trái làm bit dấu giống như bù 1, nhưng có một số khác biệt khi đổi sang hệ nhị phân có dấu, các buớc thực hiện như sau : Qui tắc 7 :
Biểu diễn số bù 2 qua mẩu 4 bit Mẩu bit Giá trị được biểu diễn 0111 7 0110 6 0101 5 0100 4 0011 3 0010 2 0001 1 0000 0 1111 -1 1110 -2 1101 -3 1100 -4 1011 -5 1010 -6 1001 -7 1000 -8 Thực chất số biểu diễn dưới dạng bù 2 là số biểu diễn ở bù 1 sau đó ta cộng thêm 1. Ví dụ :
Hình vẽ sau sẽ minh hoạ biểu diễn số bù 2 cho số -6 : nếu biểu diễn nhị phân của 6 là 0 110thì biểu diễn số bù 1 của -6 sẽ là 1 001 cộng thêm 1 +1thì biểu diễn số bù 2 của -6 sẽ là =1 010 7. Phép cộng khi số được biểu diễn ở bù 1 và bù 2Qui tắc 8:
-6 1 0 0 1 + 4 + 0 1 0 0 -21 1 0 1 -2 ở bù 1 ví dụ 2 : -6 biểu diễn ở bù 1 với mẩu 5 bit là 11001 -4 biểu diễn ở bù 1 với mẩu 5 bit là 11011 Kết quả phép cộng ở dạng bù 1 là 10100 và còn nhớ 1 khi cộng 2 bit cực trái khi đó kết quả sẽ là 10100 + 1 = 10101 là biểu diễn của số -10 ở dạng bù 1. -6 1 1 0 0 1 + -4 + 1 1 0 1 1 1 0 1 0 0 + 1 Nhớ 1 -101 0 1 0 1 -10 ở bù 1 Qui tắc 9
-6 1 0 1 0 + 4 + 0 1 0 0 1 1 1 0 -2 ở bù 2 ví dụ 2 :
-6 1 1 0 1 0 + -4 + 1 1 1 0 0 1 0 1 1 0 -10 ở bù 2 bỏ đi nhớ 8. Lỗi tràn số Trong các ví dụ trên bạn đọc chắc cũng thắc mắc tại sao ở ví dụ 2 trong phép cộng số bù 2 ta lại dùng mẩu 5 bit chứ không là 4 bit? Ý nghĩa của lỗi tràn số đã giới thiệu ở các các phần trước, đó là hiện tượng xảy ra khi số cần biểu diễn vượt quá số bit cho trước để biểu diễn nó. Ví dụ :
Nguyên nhân là do ta lấy số lượng bit để biểu diễn quá ít nên xảy ra lỗi tràn số. Do đó người sử dụng máy tính phải lường trước được tình huống này khi muốn lưu trữ dữ liệu, để khắc phục ta tăng số lượng bit nhiều hơn thì sẽ không gây hiện tượng tràn. Ví dụ với mẩu 32 bit thì giá trị dương lớn nhất là 2147483647. � Tổng quát ta có số ở phép biểu diễn bù 1 và bù 2 thì giá trị dương lớn nhất cho phép khi dùng mẩu n bit là : 2n-1 -1 và giá trị âm nhỏ nhất là -2n-1 9. Biểu diễn hỗn số bằng hệ nhị phân Ðể biểu diễn hỗn số bằng hệ nhị phân ta dùng dấu chấm cơ số (radix point) giống như cách biểu diễn số có phần thập phân trong hệ cơ số 10, khi đó số bên trái dấu chấm cơ số là biểu diễn nhị phân của phần nguyên của hỗn số và bên phải là biểu diễn nhị phân của phân số, vị trí bit bên phải đầu tiên sau dấu chấm là biểu diễn cho số kế tiếp là , , ... Với qui luật số sau sẽ nhỏ hơn 2 lần so với số trước. Các giá trị này gọi là trọng số của bit tương ứng với vị trí tính từ vị trí đầu tiên bên phải của dấu chấm cơ số. Ðể biến đổi hỗn số ở hệ nhị phân sang hỗn số ở hệ thập phân, ta vẫn sử dụng cách thực hiện như đổi số nguyên sang hệ thập phân cho các số nhị phân bên trái và bên phải dấu chấm nhưng với chú ý các số nhị phân bên phải dấu chấm sẽ có trọng số là phân số bắt đầu từ và giảm một nửa khi đi từ trái sang phải Ví dụ : Cho hỗn số 5 thì sẽ biến đổi thành 101.101 và được biểu diễn theo lưu đồ sau : Phép cộng ở trên hỗn số biểu diễn dưới dạng nhị phân cũng được thực hiện như phép cộng nhị phân cho số nguyên, chỉ có chú ý là dấu chấm cơ số phải sắp thẳng hàng cho 2 số. Ví dụ : 1 0 . 0 1 1 là biểu diễn của 2 3/8 +1 0 0 . 1 1 là biểu diễn của 4 3/4 =1 1 1 . 0 0 1 là biểu diễn của 7 1/8 10.Các phép toán luận lýBa phép toán thông thường trong nhóm của các phép toán luận lý đó là AND, OR, và EXCLUSIVE OR� (XOR). Chúng tương tự như phép cộng và trừ với hai toán hạng và trả ra một kết quả duy nhất. (Trái lại có một số phép toán mà giá trị trả về của nó sẽ cho ra 2 số khác dấu nhau như là phép rút căn bậc hai, ví dụ như 4 khi rút căn sẽ cho hai kết quả là 2 và -2). Bây giờ chúng ta sẽ xem qua một số phép toán như sau : a. Phép toán AND
b. Phép toán OR 1 1 0 0 OR 1 OR 0 OR 1 OR 0 Kết quả1 Kết quả1 Kết quả1 Kết quả0
1 0 0 1 1 0 1 0 OR 1 1 0 0 1 0 0 1 1 1 0 1 0 0 1 1
1 1 1 1 0 0 0 0 OR 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0
c. Phép toán EXCLUSIVE OR (XOR)
1 0 0 1 1 0 1 0 XOR 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 0 0 XOR 1 XOR 0 XOR 1 XOR 0 Kết quả1 Kết quả0 Kết quả0 Kết quả0
1 1 1 1 1 1 1 1 XOR 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 d. Các phép toán dịch chuyển và quay
|